我有一个网页(home.aspx)需要Windows身份验证。如果浏览器自动发送有效凭证,则会显示home.aspx。否则,将显示login.aspx。ASP.NET。自定义页面上401
在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状态码并重定向到自定义网页。
我没有示例代码在我面前作为示例发布,但听起来像您需要允许从web.config或安全设置中匿名访问login.aspx。否则,如果没有有效的证书,IIS将不会提供它。 – GalacticCowboy
感谢您的回复。我启用了对login.aspx的匿名访问,并禁用了Windows身份验证,但仍然遇到同样的问题。 – user2769810