【问题标题】:Web Service call from AJAX, service not found来自 AJAX 的 Web 服务调用,未找到服务
【发布时间】:2012-08-30 21:12:06
【问题描述】:

我有一个通过 AJAX 调用启动的网络方法,这是我的网络方法:

 [WebMethod(EnableSession=true)]
 public void ProcessAddress(Dictionary<string, string> Header, bool AddrValues)
 {

    _service.ProcessNoMatchModal(Header, AddrValues);
 }

从这里调用:

 $.ajax({
        type: "POST",
        contentType: "application/json; charset=utf-8",
        url: "../Services/Address.asmx/ProcessAddress",
        data: JSON.stringify(data),
        dataType: "json",
        success: function(data) {
            alert("success");
        },
        error: function() { 
            alert("error");
        },
        complete: function() { },
        asynch: false
    });

更令人困惑的是我有两个指向相同代码源的虚拟目录,第一个该服务可以工作并且可用,但第二个它不工作,我在 firebug 中看到 404

任何线索/建议都会有所帮助

【问题讨论】:

    标签: c# ajax web-services iis


    【解决方案1】:

    From Here:

    1. 方法必须是静态的
    2. 方法需要用[WebMethod()]修饰
    3. 如果要对方法进行 ASP.NET AJAX 回调,则该方法需要用 [ScriptMethod()] 修饰

    【讨论】:

      【解决方案2】:

      由于这是一个 404 http 错误,我会责怪您在 url 设置中所做的相对路径引用(带有双点)。

      从您的第一个位置开始,您使用正确的路径调用网络服务,从第二个位置开始,您的目标路径错误...尝试使用 Fiddler 或 Chrome 开发人员工具查看您调用的实际路径,看看我是否正确.

      如果你从不同深度的虚拟目录调用这个函数,你可能最好不要使用相对路径引用,而是从根目录开始。 我猜以下其中一项应该有效:

      url: "Services/Address.asmx/ProcessAddress"
      url: document.location.hostname + "/Services/Address.asmx/ProcessAddress"
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2012-12-05
        • 2018-05-19
        • 2012-06-14
        • 1970-01-01
        • 2014-06-24
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多