【发布时间】:2015-09-08 22:19:53
【问题描述】:
我有一个面向 Internet 的 ASP.NET 网站,我想通过 Windows 身份验证来保护它。我将我的 web.config 文件设置为:
<system.web>
<authentication mode="Windows" />
<authorization>
<allow users="*"/>
<deny users="?"/>
</authorization>
然后我在 IIS 7.5 中禁用了匿名访问并启用了 Windows 身份验证。
这会导致显示我的 Windows 凭据的提示框,但是单击“取消”会给我一个标准的 401 错误页面。我想显示一个静态 HTML 文件来代替这条消息,但是我无法让它工作,我尝试了各种设置的组合,例如:
<httpErrors errorMode="Custom" existingResponse="Replace" lockAllAttributesExcept="errorMode"> <error statusCode="401" prefixLanguageFilePath="c:\inetpub\custerr" path="MyCustom401.htm" /> </httpErrors>
和
<customErrors mode="Off" defaultRedirect="ErrorPage.aspx">
<error statusCode="401" redirect="MyCustom401.aspx" />
</customErrors>
我希望任何人输入正确的 Windows 凭据都可以正常进入网站,但那些输入无效或详细信息的人可以查看自定义 HTML 页面。
谁能指出我正确的方向?
谢谢!
【问题讨论】:
-
Web 浏览器通常会显示它们的错误页面版本,所以您真的要更改 IIS 版本吗?
-
我想向用户显示一个自定义页面,该页面将指导他们如何获取有效凭据以登录网站。所以是的,我希望能够覆盖他们看到的错误页面。
-
这根本不可能,因为 Web 浏览器端设置具有最高优先级。您必须重定向到特定页面并返回 200 响应代码而不是 401。