ASP.NET。 自定义页面上401
我有一个需要Windows身份验证的网页(home.aspx)。 如果浏览器自动发送有效凭证,则会显示home.aspx。 否则,将显示login.aspx。
在IE中,我检查了Internet选项>本地内联网>自定义级别>用户认证中的“提示输入用户名和密码”复选框。 我遵循http://www.codeproject.com/Articles/11202/Redirecting-to-custom-page-when-quot-Access-de中的步骤,并且它在我的本地开发服务器上正常工作。 但是,在生产服务器上,这是一个不同的故事。
在IIS中,Home.aspx禁用了匿名身份验证,并启用了Windows身份验证。 Login.aspx启用了匿名身份验证并禁用了Windows身份验证。
在开发服务器上,在使用正确凭证登录的计算机上,显示home.aspx。 而且,当浏览器没有发送证书时,Application_EndRequest被命中401状态码,然后默认的Windows身份验证提示显示 。 取消该对话框后,显示login.aspx。 这是正确的行为。
但是,在生产服务器上,使用正确的凭据登录的计算机上显示home.aspx。 而且,当浏览器没有发送证书时,Application_EndRequest被命中401状态码,然后显示默认的Windows身份验证提示。 取消该对话框后,将显示默认的401页面。
是否有人在生产服务器上发生了什么,以及为什么我无法截获401状态码并重定向到自定义网页。
在IIS 7中,他们在web.config中添加了一个属性,用于控制自定义错误的行为。 默认情况下,自定义和详细错误只显示在本地浏览器上。 要显示您的自定义错误,您需要在web.config <httpErrors>
元素errorMode
属性中更改此errorMode
。
<configuration>
<system.webServer>
<httpErrors errorMode="DetailedLocalOnly" defaultResponseMode="File" >
<remove statusCode="500" />
<error statusCode="500"
prefixLanguageFilePath="C:ContosoContenterrors"
path="500.htm" />
</httpErrors>
</system.webServer>
</configuration>
DetailedLocalOnly
是默认值; 其他可能的值是Detailed
和Custom
。
有关更多阅读,请参阅Microsoft文章,其中讨论了此配置。
另外:你链接的文章已超过10年,因此对于“现代”发展颇有怀疑。 其中一篇关于5年后发布的文章的评论指出了同样的问题和解决方案。
链接地址: http://www.djcxy.com/p/71851.html