【问题标题】:IIS 6 swallowing errors when using <customErrors mode="On"使用 <customErrors mode="On" 时出现 IIS 6 吞咽错误
【发布时间】:2011-10-24 17:55:11
【问题描述】:

我有一个在 iis 6 上运行的应用程序(带有应用程序池的文件夹),我正在尝试设置自定义错误页面。我在网络配置中有一个自定义错误的元素,但它从未出现。如果我进入 IIS 并查看应用程序的属性,我可以设置一个自定义错误以指向 oops.html。似乎 IIS 没有使用我的 web.config 中的设置来处理错误。

这就是我所拥有的 在 web.config 中

<system.web>
    ...
    <customErrors mode="On" defaultRedirect="/oops.html" redirectMode="ResponseRewrite" />
    ...
</system.web>
<system.webServer>
    ...
    <httpErrors existingResponse="PassThrough" />
    ...
<system.webServer>

应用程序的地址如下: www.mysite.com/myappfolder/

网络配置位于: www.mysite.com/myappfolder/

并且 oops.html 位于: www.mysite.com/myappfolder/oops.html

如果它尝试去: www.mysite.com/myappfolder/NothingReal 将抛出 404,只有当我将 IIS 配置为重定向到 oops.html 时,我才会看到该页面。

指定customerrors目标的规则是什么?我应该删除“/”吗?使用 ~/myappfolder/oops.html 怎么样?如何绕过 IIS 6 错误处理并将所有错误重定向到我的页面?

【问题讨论】:

  • 你至少得到了默认的 asp.net 错误页面吗?还是根本找不到您的oops.html 页面?
  • 我收到一个错误页面,告诉我如何更新我的 Web 配置以启用自定义错误。然而,这与我在 MSDN 上阅读的关于 customErrors 选项的内容不同。

标签: asp.net iis-6 custom-errors


【解决方案1】:

您尝试过使用~/oops.html 吗?

【讨论】:

  • 据我所知 ~ 意味着 www.mysite.com 因此当文件位于 www.mysite.com/myappfolder/oops 时将被解释为 www.mysite.com/oops.html。 html
  • 当你使用 ~ 这意味着如果存在的话正在渲染根 + 虚拟路径。 ~/ 如果在您的虚拟文件夹的 App_Domain 中调用,将呈现 /myappfolder。上面的 web.config 在那个文件夹里面吗?
【解决方案2】:

web.config 中的customErrors 元素仅适用于由 ASP.NET 运行时监视的资源。默认情况下,图像和 HTML 文件等静态资源由 IIS 处理,从不移交给 ASP.NET 运行时。

【讨论】:

    【解决方案3】:

    所以这是一个问题的组合。首先是服务器上有两个级别的错误处理。

    第一级位于 IIS 中。当 IIS 遇到错误时,它将使用其错误页面来传递或掩盖问题。

    第二层是在 ASP 运行时。如果页面中有错误,则脚本可以委托给“oops”页面,前提是 Web 配置已配置为执行此操作。

    如果 asp 没有重定向到“oops”页面或该页面的位置不正确,则 IIS 会处理该错误。在不重定向的情况下会抛出 500 级错误。如果“oops”页面的位置错误,则会抛出 404。

    我的问题在于处理方式,并且 IIS 和我的 Web 配置指向同一个页面,这使得调试更具挑战性。

    最后我解决了我的问题,第一个问题是路径与处理重定向的 webconfig 相关,并且 ~/ 使用不正确。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2018-06-05
      • 1970-01-01
      • 1970-01-01
      • 2016-06-29
      • 2017-01-26
      • 2011-05-20
      • 1970-01-01
      相关资源
      最近更新 更多