从JQuery调用webservice时出错

时间:2010-04-21 07:58:37

标签: c# jquery web-services asmx

当我尝试从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...
    }

   }

任何人都知道我在这里缺少什么?

2 个答案:

答案 0 :(得分:2)

通过将以下内容添加到web-config来管理最终解决此问题:

<webServices>
  <protocols>
    <add name="HttpPost"/>
  </protocols>
</webServices>

显然,服务器阻止来自远程主机的传入请求。

答案 1 :(得分:1)

确保web.config文件正确configured