关闭经典ASP的IIS 8自定义错误 - IIS中的潜在错误?

时间:2013-04-19 16:27:31

标签: iis asp-classic custom-errors iis-8

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

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

问题:

当为500.100(经典ASP)响应代码设置自定义错误页面时,即使 errorMode 设置为详细,IIS也始终会发送自定义错误页面。让IIS发送错误的唯一方法是明确删除web.config中的条目。

EG:

<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,会对Classic ASP 500错误起作用。

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

2 个答案:

答案 0 :(得分:1)

它是一个已知的错误,我们也可以通过删除500错误来解决它,而是链接到我们的自定义页面,从“当你可以找到其他任何东西发送它们”的部分配置时。

(我无法拒绝其所谓的)

答案 1 :(得分:0)

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

替换

<httpErrors errorMode="Detailed">

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

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