1

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

 [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

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

4

2 回答 2

0

从这里:

  1. 方法必须是静态的
  2. 方法需要用 [WebMethod()] 修饰
  3. 如果要对方法进行 ASP.NET AJAX 回调,则该方法需要用 [ScriptMethod()] 修饰
于 2012-08-31T09:25:12.023 回答
0

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

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

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

url: "Services/Address.asmx/ProcessAddress"
url: document.location.hostname + "/Services/Address.asmx/ProcessAddress"
于 2012-08-31T10:15:08.073 回答