来自AJAX的Web服务调用,未找到服务

时间:2012-08-30 21:12:07

标签: c# ajax web-services iis

我有一个通过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

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

2 个答案:

答案 0 :(得分:0)

From Here:

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

答案 1 :(得分:0)

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

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

如果从具有不同深度的虚拟目录中调用此函数,则在没有相对路径引用的情况下可能会更好,但从根目录开始。 我想其中一个应该可以工作:

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