首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在重定向模式打开的情况下对web方法的jquery ajax调用?

在重定向模式打开的情况下对web方法的jquery ajax调用?
EN

Stack Overflow用户
提问于 2014-05-16 14:23:43
回答 1查看 3K关注 0票数 3

我有一段jquery,它对服务器端的webmethod进行ajax调用

代码语言:javascript
复制
$("#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);
                }
            });
        });

如果我关闭了路由,则可以很好地工作

代码语言:javascript
复制
settings.AutoRedirectMode = RedirectMode.Off;

我很想启用它,但是当我启用它时,ajax调用失败并显示“401(Unauthorized)”。有没有一种方法可以让我在进行ajax调用的同时仍然保持路由?

代码语言:javascript
复制
settings.AutoRedirectMode = RedirectMode.Permanent;

编辑:有些人投票认为这应该作为副本关闭,答案是通过here,但这个答案没有帮助。它提供的第一个解决方案是将RedirectMode设置为Off,这正是我不想做的,另外一个关于友好Urls的解决方案不起作用。

EN

回答 1

Stack Overflow用户

发布于 2014-08-07 05:54:21

我明白你的问题--禁用AutoRedirectMode意味着.aspx URL是可以自由访问的(不太好)。但是您希望使用ASPX url访问您的WebMethod。

解决此问题的方法是禁用如上所示的自动重定向模式

代码语言:javascript
复制
settings.AutoRedirectMode = RedirectMode.Off;

并在page_load中自己处理包含.aspx页面的请求(在访问WebMethod时不会调用)。

代码语言:javascript
复制
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:

代码语言:javascript
复制
Response.RedirectPermanent(Request.RawUrl.Replace(".aspx",""));

如果你使用MasterPage或者从页面继承,你只需要写一次代码。

票数 6
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/23693845

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档