我知道那里有类似的帖子,但我没有找到任何帮助。
当我不使用 url 重写时,我的 web 方法可以工作,但是一旦我打开它,它就会停止工作。
jQuery
$.ajax({
type: "POST",
url: "index.aspx/SaveSetting",
contentType: "application/json; charset=utf-8",
dataType: "json",
success: function(msg) {
console.log(msg);
}
});
C#
[WebMethod()]
[ScriptMethod(UseHttpGet = true, ResponseFormat = ResponseFormat.Json)]
public static string SaveSetting()
{
return "OK";
}
调用此方法时,我会返回页面的完整 HTML,但没有“OK”消息。 我运行了调试器,发现当我调用 web 方法时,它会触发页面中的 Page_Load 而不是 web 方法。
所以我得到了正确的路径,但是没有调用web方法。
我使用 C#、jQuery、ASP.NET 3.5。
有什么帮助吗?
最佳答案
您需要使用指向您的网络方法的完整链接。
如果你查看 Firebug ,你会看到,例如:
http://localhost/test1/index.aspx/SaveSetting作为您尝试请求的 url,假设/test1 重写为/index.aspx
假设该页面位于您站点的根目录下,则以下内容将起作用:
网址:/index.aspx/SaveSetting
(顺便说一下,这对 url 路由根本不起作用!)
或许将您的网络方法移至 asmx 文件中?
关于c# - 当 url 重写处于事件状态时不调用 WebMethod,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10499894/