当我尝试从Jquery调用一个简单的Web服务方法时,我遇到了一个奇怪的问题。
在本地它可以正常工作,但在我的测试服务器上却没有。
jquery请求如下所示(仅显示实际请求而不是方法的其余部分):
$.ajax({
type: "POST",
url: "/Service/Service.asmx/AddTab",
data: "tab=" + element.innerHTML,
success: function(msg) {
alert('success');
}
});
当我从测试服务器本地运行它时它运行正常,这让我想知道它是否可能是我在IIS中遗漏的一些设置。
如果我导航到.asmx文件并单击AddTab方法,我会获得SOAP 1.1和SOAP 1.2 XML的列表,但不会获得HTTP POST请求。如果我在本地导航到它,我得到所有三个(SOAP 1.1,SOAP 1.2和HTTP Post)
服务设置如下:
[WebService(Namespace = "mynamespace")]
[WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)]
[System.ComponentModel.ToolboxItem(false)]
[ScriptService()]
public class Service : System.Web.Services.WebService
{
[WebMethod(EnableSession=true)]
[ScriptMethod()]
public void AddTab(string tab)
{
//Some code to add a tab which evidently works locally...
}
}
任何人都知道我在这里缺少什么?
答案 0 :(得分:2)
通过将以下内容添加到web-config来管理最终解决此问题:
<webServices>
<protocols>
<add name="HttpPost"/>
</protocols>
</webServices>
显然,服务器阻止来自远程主机的传入请求。
答案 1 :(得分:1)
确保web.config文件正确configured。