我知道那里有类似的帖子,但我找不到任何帮助。
当我不使用网址重写时,我的网络方法有效,但是一旦打开它就停止工作。
的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方法。
所以我得到了corerct路径,但没有调用web方法。
我使用C#,jQuery,ASP.NET 3.5。
任何帮助?
答案 0 :(得分:2)
您需要使用指向网络方法的完整链接。
如果你看看萤火虫,你会看到,例如:
http://localhost/test1/index.aspx/SaveSetting作为您尝试请求的网址,假设/ test1重写为/index.aspx
假设页面位于您网站的根目录下,以下内容将起作用:
url:/index.aspx/SaveSetting
(顺便说一句,这在url路由方面根本不起作用!)
或许将您的网络方法转换为asmx文件?
答案 1 :(得分:0)
如果您将其添加到您的javascript:
PageMethods.set_path("/whatever/the/actual/path/is/index.aspx");
然后你的标准webmethod调用应该有效:
PageMethods.SaveSetting(console.log);
我的回答取自先前提出的this问题。
答案 2 :(得分:0)
只是后续行动,以防其他任何人偶然发现。在web.config中还需要确保IIS理解如何处理Web方法的请求,而不是页面本身,这是必需的:
<httpModules>
<add name="ScriptModule" type="System.Web.Handlers.ScriptModule, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"/>
</httpModules>
如果没有这一行,我将遇到完全相同的问题-服务器将返回整个FRONT网页,而不是来自webmethod的响应。
web.config中可能还需要其他内容。我的真是太棒了(ha !!),所以谁知道还有什么可能影响这个问题。