我有一个部署到 IIS6 的带有 Windows 身份验证的 ASP.NET MVC3 应用程序。当经过身份验证的用户单击他们无权查看的链接时,系统会提示他们输入用户名和密码(在浏览器对话框中,而不是在页面中),如预期的那样。
但是,在单击取消或输入无效凭据 3 次后,我没有看到 401 Unauthorized 页面,而是看到了一个空白页面。
查看 Fiddler,点击取消后有三个请求/响应。以下是响应摘要和标题:
ASP.NET 访问被拒绝消息 (401.2)
HTTP/1.1 401 未经授权日期:2012 年 7 月 20 日星期五 14:34:21 GMT 服务器:Microsoft-IIS/6.0 WWW-Authenticate:协商 WWW-Authenticate:NTLM X-Powered-By:ASP.NET X-AspNet-Version: 4.0.30319 缓存控制:私有内容类型:文本/html;charset=utf-8 内容长度:1701 代理支持:基于会话的身份验证
IIS 您无权查看此页面 (401.1)
HTTP/1.1 401 Unauthorized Content-Length: 1539 Content-Type: text/html Server: Microsoft-IIS/6.0 WWW-Authenticate: NTLM TlRMTVNTUAACAAAADAAMADgAAAAF... (为简洁起见省略) X-Powered-By: ASP.NET 日期: Fri , 2012 年 7 月 20 日 14:34:21 GMT 代理支持:基于会话的身份验证
空响应
HTTP/1.1 401 未经授权日期:2012 年 7 月 20 日星期五 14:34:21 GMT 服务器:Microsoft-IIS/6.0 WWW-Authenticate:协商 WWW-Authenticate:NTLM X-Powered-By:ASP.NET X-AspNet-Version: 4.0.30319 X-AspNetMvc 版本:3.0 缓存控制:私有内容长度:0 代理支持:基于会话的身份验证
如何让它显示 401 错误页面?
更新1:
这是我的 web.config 错误部分。
<customErrors mode="RemoteOnly" defaultRedirect="~/Error" />
我也在用HandleErrorAttribute
。
我怀疑 IIS 返回的是空白页而不是 ASP.NET,但我不确定如何证明这一点。
更新 2:
这很有趣。如果我刷新空白页,我会看到 ASP.NET Access is Denied 消息。