.NET Windows身份验证自定义错误页面

时间:2011-12-01 10:13:53

标签: .net

我在谷歌和这里找到了一些关于此事的网页,但似乎没有一个网页能解决我所看到的问题。我正在使用IIS 7.5。该网站使用Windows身份验证并访问用户必须登录的任何站点(在加载第一页时自动发生)。如果用户无法访问该站点,那么他们应该获得401或403,我正在尝试为此创建一个简单的htm自定义错误页面。错误页面位于Errors文件夹中,该文件夹上设置了匿名身份验证。

如果我尝试加载站点并强制验证失败,那么我只是获得带有HTTP错误401的标准服务器错误页面,它看起来不像是在尝试加载错误页面。如果我尝试加载错误页面本身,那么工作正常。

没有授权位,如果用户已登录,则可以访问整个站点,如果用户无法进行身份验证,则他们只能访问错误页面。我已将以下部分添加到我的web.config中:

  <customErrors mode="On" defaultRedirect="~/Errors/AuthenticationError.htm">
      <error statusCode="401" redirect="~/Errors/AuthenticationError.htm" />
      <error statusCode="403" redirect="~/Errors/AuthenticationError.htm" />
  </customErrors>

非常感谢任何帮助!

1 个答案:

答案 0 :(得分:2)

好的我已经成功破解了这一点,IIS 7.5似乎很乐意忽略customErrors,因此必须在system.webServer部分中使用httpErrors。您似乎还必须声明errorMode =“Custom”。我得到的代码块是:

<httpErrors errorMode="Custom" defaultResponseMode="File">
  <remove statusCode="401" subStatusCode="-1" />
  <remove statusCode="403" subStatusCode="-1" />
  <error statusCode="401" path="Errors\AuthenticationError.htm" />
  <error statusCode="403" path="Errors\AuthenticationError.htm" />
</httpErrors>

我觉得这会将整个网站设置为使用非详细错误页面,即使在未包含在该部分中的页面上也是如此。有一个选项可以远程显示自定义错误,并在本地详细说明错误,这可能是一种可能的解决方法。

This webpage是我发现的最好的一个突出显示所有这一切。