我有一段jquery,它对服务器端的webmethod进行ajax调用
$("#Result").click(function () {
$.ajax({
type: "POST",
url: "TestPage.aspx/TestString",
data: "{}",
contentType: "application/json; charset=utf-8",
dataType: "json",
success: function (msg) {
// Replace the div's content with the page method's return.
$("#Result").text(msg.d);
}
});
});如果我关闭了路由,则可以很好地工作
settings.AutoRedirectMode = RedirectMode.Off;我很想启用它,但是当我启用它时,ajax调用失败并显示“401(Unauthorized)”。有没有一种方法可以让我在进行ajax调用的同时仍然保持路由?
settings.AutoRedirectMode = RedirectMode.Permanent;编辑:有些人投票认为这应该作为副本关闭,答案是通过here,但这个答案没有帮助。它提供的第一个解决方案是将RedirectMode设置为Off,这正是我不想做的,另外一个关于友好Urls的解决方案不起作用。
发布于 2014-08-07 05:54:21
我明白你的问题--禁用AutoRedirectMode意味着.aspx URL是可以自由访问的(不太好)。但是您希望使用ASPX url访问您的WebMethod。
解决此问题的方法是禁用如上所示的自动重定向模式
settings.AutoRedirectMode = RedirectMode.Off;并在page_load中自己处理包含.aspx页面的请求(在访问WebMethod时不会调用)。
protected void Page_Load(object sender, EventArgs e)
{
if(Request.RawUrl.Contains(".aspx"))
{
Response.StatusCode = 404;
Server.Transfer("page-not-found.aspx");
}
}如果您想按正常方式重定向,而不是发送404条.ASPX并使用以下命令发送301:
Response.RedirectPermanent(Request.RawUrl.Replace(".aspx",""));如果你使用MasterPage或者从页面继承,你只需要写一次代码。
https://stackoverflow.com/questions/23693845
复制相似问题