StaticFile处理程序的自定义错误页面

时间:2013-11-07 20:02:24

标签: asp.net iis web-config

我正在尝试将自定义错误页面用于任何未经处理的URL或磁盘上的有效文件。

我现在有以下设置:

<system.web>
  <customErrors mode="On" defaultRedirect="~/Error">
    <error statusCode="404" redirect="~/Error/Error404" />
    <error statusCode="500" redirect="~/Error" />
  </customErrors>
</system.web>
<system.webServer>
  <httpErrors errorMode="Detailed" defaultResponseMode="ExecuteURL">
    <remove statusCode="404" />
    <remove statusCode="500" />
    <error responseMode="ExecuteURL" statusCode="404" path="/Error/Error404" />
    <error responseMode="ExecuteURL" statusCode="500" path="/Error" />
  </httpErrors>
</system.webServer>

这会正确重定向以下网址:

  • /test
  • /test/foo/bar

但是,包含句点的任何内容都会显示以下消息:

  • 模块 IIS Web Core
  • 通知 MapRequestHandler
  • 处理程序 StaticFile
  • 错误代码 0x80070002
  • 请求的网址 https://localhost/test.txt
  • 物理路径 C:\foo\test.txt
  • 登录方法匿名
  • 登录用户匿名

我需要这些网址也会重定向到我的自定义错误页面。

1 个答案:

答案 0 :(得分:0)

尝试使用

<httpErrors errorMode="Custom" .. />

但是,要小心。我发现我有时会得到循环条件或IIS错误页面将在我的自定义错误模块之前执行。 IIS和ASP.NET应用程序之间的接口并不总是很好。我似乎仍然无法找到一种方法来捕获ASP.NET中的静态文件404,否则会陷入静态文件处理程序。