【发布时间】:2015-10-19 18:26:21
【问题描述】:
我有一个需要 Windows 身份验证的网页 (home.aspx)。如果浏览器自动发送有效凭据,则会显示 home.aspx。否则,将显示 login.aspx。
在 IE 中,我已在 Internet 选项 > 本地 Intranet > 自定义级别 > 用户身份验证中选中“提示输入用户名和密码”复选框。 我已经按照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 不会在没有有效凭据的情况下为其提供服务。
-
感谢您的回复。我启用了对 login.aspx 的匿名访问,并禁用了 windows 身份验证,但仍然遇到同样的问题。
标签: asp.net authentication iis