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