大家好我在web.config中遇到CustomErrors问题,我试图显示错误401的自定义页面,但是当用户尝试访问控制器并且没有授权时。< / p>
在这种情况下,返回值为302,但必须为401,我尝试使用Global.asax中的Application_EndRequest()来更改Response.Status代码:
void Application_EndRequest(object sender, EventArgs e)
{
if (Context.Response.StatusCode == 302)
{
Context.Response.Clear();
Context.Response.StatusCode = 401;
}
}
有了这个,返回的错误是401但是没有显示自定义错误的页面,只是IIS的默认消息
未经授权:由于凭据无效,访问被拒绝
如何让自定义错误显示401错误的正确页面?
答案 0 :(得分:0)
在https://stackoverflow.com/a/620559/686674
的stackoverflow中的另一个问题上查看MVC中的自定义错误解决方案您想要覆盖Application_Error而不是Application_EndRequest。
答案 1 :(得分:0)
如果您使用的是表单身份验证,则401由ASP.NET内部处理,并在质询/响应机制中用于身份验证。使用身份验证时,指定登录页面,当用户未获得授权时,会将其重定向到该页面以进行登录。
未经授权的401和被禁止的403之间存在差异。
如果您使用的是Windows身份验证,摘要或基本版,那么您将获得401 Challenge弹出窗口。 ASP.NET拦截401以便您不会获得弹出窗口,而是可以处理表单中的身份验证错误。
答案 2 :(得分:0)
我找到了问题here
的解决方案使用自定义授权属性重定向到&#34; AccessDenied&#34;页