在错误401.2未授权时重定向。

5

我一直在尝试重定向错误消息401.2:未经授权:由于以下服务器配置而登录失败:

<customErrors defaultRedirect="Error.aspx" mode="On">
      <error statusCode="401" redirect="Unauthorized.aspx" />
    </customErrors>

但实际上它并没有重定向,仍然显示默认的“访问被拒绝”页面。我做错了什么?

2个回答

6
将以下内容添加到global.asax似乎工作得很好:
void Application_EndRequest(object sender, EventArgs e)
        {
            if (Response.StatusCode == 401)
                Response.Redirect("Unauthorized.aspx");
        }

0

首先尝试这个:

在您的Unauthorized.aspx.cs页面的Page_Load方法中设置:

private void Page_Load(System.Object sender, System.EventArgs e)
{
    //Put user code to initialize the page here 
    Response.StatusCode = 401;
    Response.TrySkipIisCustomErrors = true;
}

详细信息请参阅:

HttpResponse.TrySkipIisCustomErrors 属性

IIS 7错误页面占用500个错误

第二次尝试此方法:<customErrors> 标签之外,使用此方法绕过 IIS 错误页面:

<system.webServer>
      <httpErrors existingResponse="PassThrough" />
</system.webServer>

有一种方法可以在global.asax中拦截EndRequest,但不确定如何实现。我找到的唯一示例都是用VB编写的。 - sd_dracula
我已经尝试了以上两个步骤。仍然无法触发,只是进入了YSOD。它似乎从未到达过Unauthorized.aspx页面,甚至是global.asax。 - sd_dracula

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接