代码之家  ›  专栏  ›  技术社区  ›  Robban

从jquery调用WebService时出错

  •  2
  • Robban  · 技术社区  · 14 年前

    当我试图从jquery调用一个简单的WebService方法时,我遇到了一个奇怪的问题。

    在本地它可以正常工作,但在我的测试服务器上却不行。

    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、soap1.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 回复  |  直到 14 年前
        1
  •  2
  •   Robban    14 年前

    通过将以下内容添加到Web配置中,最终解决了这一问题:

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

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

        2
  •  1
  •   kgiannakakis    14 年前

    确保web.config文件正确 configured .