2

我想我在 IIS 错误页面系统中发现了一个错误。

注意: - 我没有使用 .NET 错误页面 - 这设置为关闭

问题:

为 500.100 (Classic ASP) 响应代码设置自定义错误页面时,即使errorMode设置为Detailed ,IIS 也始终发送自定义错误页面。让 IIS 发送错误的唯一方法是显式删除 web.config 中的条目。

例如:

<remove statusCode="500" subStatusCode="100"/>
 or
<clear/>

注意 - 以下内容不起作用适用于所有其他代码):

<remove statusCode="500" subStatusCode="-1"/>

我的场景:

  • IIS 8(我不知道问题是否存在于旧版本的 IIS 中)
  • 运行 .NET 2.0 的网站 - 经典管道
  • 错误页面上的功能委派设置为只读
  • IIS 中的错误页面设置如下(由于上述功能委托,这些条目不在 web.config 中):
    • 404 - /path/to/404.htm - ExecuteURL
    • 500 - /path/to/500.htm - ExecuteURL
    • 500.100 - /path/to/500.htm - ExecuteUrl

关闭自定义错误:

为了关闭自定义错误,我需要做的就是:

  • 加载 IIS
  • 加载Error Pages
  • 点击Edit Feature Settings
  • 选择Detailed Errors

这适用于经典 ASP 500 错误(状态代码 500.100)之外的所有代码。

我可以获得正确的经典 ASP 错误的唯一方法是设置以下内容(这需要我将功能委托更改为读/写):

<system.webServer>
    <httpErrors errorMode="Detailed">

        <clear/>  
        OR    
        <remove statusCode="500" subStatusCode="100"/>

    </httpErrors>    
</system.webServer>

概括

似乎如果设置了 500.100 自定义错误页面,则将详细错误设置为 true 不适用于经典 ASP 500 错误。

这是一个错误还是我错过了什么?

4

2 回答 2

1

这是一个已知的错误,我们也得到并正在解决它,方法是删除 500 错误,而是从配置的“当您可以找到其他任何东西发送”部分链接到我们的自定义页面。

(我不记得它叫什么)

于 2013-04-22T11:49:20.007 回答
0

尝试以这种方式修改您的 web.config(它适用于 IIS 7.5)。

换行

<httpErrors errorMode="Detailed">

<httpErrors existingResponse="PassThrough" errorMode="Detailed">

这是因为默认情况下 IIS7 会截获 HTTP 状态代码,例如由应用程序生成的 4xx 和 5xx 进一步向上管道。

于 2013-06-27T08:49:50.723 回答