5

我试图让自定义错误页面适用于任何未经处理或不是磁盘上有效文件的 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>

这会正确重定向以下 URL:

  • /test
  • /test/foo/bar

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

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

我需要这些 URL 来重定向到我的自定义错误页面。

4

1 回答 1

0

尝试使用

<httpErrors errorMode="Custom" .. />

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

于 2013-11-14T06:34:45.370 回答