【问题标题】:Error calling webservice from JQuery从 JQuery 调用 web 服务时出错
【发布时间】:2010-04-21 07:58:36
【问题描述】:

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

   }

有人知道我在这里缺少什么吗?

【问题讨论】:

  • .NET 和 IIS 版本?你试过在 jQuery 调用中设置 contentType 吗?
  • 3.5,IIS 7,是的,它在本地运行良好......在本地测试服务器上也是如此......有或没有 contentType

标签: c# jquery web-services asmx


【解决方案1】:

通过在 web-config 中添加以下内容最终解决了这个问题:

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

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

【讨论】:

    【解决方案2】:

    确保 web.config 文件是正确的configured

    【讨论】:

    • web.config 看起来与该帖子中指定的完全一样:/
    猜你喜欢
    • 1970-01-01
    • 2012-07-13
    • 2016-01-25
    • 1970-01-01
    • 2012-06-18
    • 2015-12-29
    • 2017-08-17
    相关资源
    最近更新 更多