Web服务在生产环境中返回“永久移动301错误”

我使用jQuery调用一个Web服务,我有一个非常奇怪的问题,我整个上午都遇到了问题。 当我在开发环境中调用Web服务时,一切都运行良好。 投入生产后,我从Firebug获得“301 Moved Permanently 38ms”。

我的脚本是这样的:

var data = '{"product":"' + productName + '", "from":"' + from + '", "question":"' + question + '", "phone":"' + phone + '", "type":"' + typeOfMail + '"}'; $.ajax({ type: "POST", datatype: "json", data: data, url: '', contentType: "application/json; charset=utf-8", success: function (data) { resetContactControls(); $('#').hide(); }, failure: function (data) { } }); 

这将编译为生产中的以下URL:

 url: '/Services/MailService.asmx/SendProductEmail' 

在我的生产环境中,使用Firebug我可以看到它试图访问我的URL:

 http://www.hcemballering.dk/Services/MailService.asmx/SendProductEmail 

手动尝试打开此URL时,我点击了我的网络服务。 我也试过更改url,所以它只使用正常的../Services/MailService.asmx/SendProductEmail。

我也尝试查看我的安全设置,它应该工作(所有进程都有访问权限)。 我甚至试图让用户“Everyone”完全访问“服务”,所以它不应该是问题。

这是我的Web服务类:

 [ScriptService] public class MailService : System.Web.Services.WebService { ILog logger = LogManager.GetLogger(typeof(MailService)); [WebMethod] public bool SendProductEmail(string product, string from, string question, string phone, string type) { try { StringBuilder content = new StringBuilder(); content.AppendLine( string.Format( "Produkt:
{0}

Fra email:
{1}

Telefon:
{2}

Type af henvendelse:
{3}

Spørgsmål:
{4}", product, from, phone, type, question)); var module = new MailModule(content.ToString(), "Kontakt om HC produkt: " + product); module.SendMail(); } catch (Exception exp) { throw new Exception("Mailen blev desværre ikke sendt, da der skete en fejl"); } return true; } }

有任何想法吗?

好的,这太傻了。

这是由我的web.config中的规则引起的。 我有以下规则:

      

当然,我的url并非小写。 所以我这样做了:

         

并且还将所有东西都做成小写,因为它无论如何都是好的风格。

它的工作原理!

手动点击Web服务时,您正在使用GET。 你ajax正在使用POST。 您的Web服务是否设置为接收POST?