我有一个通过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
任何线索/建议都会有所帮助
答案 0 :(得分:0)
- 方法必须是静态的
- 该方法需要使用[WebMethod()]
进行修饰- 如果要对其进行ASP.NET AJAX回调,则需要使用[ScriptMethod()]修饰该方法
醇>
答案 1 :(得分:0)
由于这是一个404 http错误,我会责怪你在url设置中做过的相对路径引用(带有双点)。
从您的第一个位置,您使用正确的路径调用网络服务,从第二个位置开始您使用错误的路径...尝试查看您使用Fiddler或Chrome开发者工具调用的实际路径,看看我是否正确
如果从具有不同深度的虚拟目录中调用此函数,则在没有相对路径引用的情况下可能会更好,但从根目录开始。 我想其中一个应该可以工作:
url: "Services/Address.asmx/ProcessAddress"
url: document.location.hostname + "/Services/Address.asmx/ProcessAddress"