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是默认值; 其他可能的值是DetailedCustom

有关更多阅读,请参阅Microsoft文章,其中讨论了此配置。

另外:你链接的文章已超过10年,因此对于“现代”发展颇有怀疑。 其中一篇关于5年后发布的文章的评论指出了同样的问题和解决方案。

链接地址: http://www.djcxy.com/p/71851.html

上一篇: ASP.NET. Custom Page on 401

下一篇: Custom 401 page in IIS with ASP.NET