【问题标题】:Turning off IIS8 Custom Errors for Classic ASP - Potenial bug in IIS?关闭经典 ASP 的 IIS8 自定义错误 - IIS 中的潜在错误?
【发布时间】:2013-04-13 02:53:28
【问题描述】:

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

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

问题:

当为 500.100(经典 ASP)响应代码设置自定义错误页面时,即使 errorMode 设置为 Detailed,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 自定义错误页面,那么将 Detailed Errors 设置为 true 适用于 Classic ASP 500 错误。

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

【问题讨论】:

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


【解决方案1】:

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

(我不记得它叫什么了)

【讨论】:

  • 嗨,你能指出这是一个已知的错误吗?我找不到任何来自 MS 的官方说法。我可能找错地方了!谢谢
【解决方案2】:

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

换行

<httpErrors errorMode="Detailed">

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

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

【讨论】:

  • 这实际上并不能解决问题。如果存在现有响应,您将告诉 httpErrors 不要触发。
猜你喜欢
  • 2017-11-16
  • 1970-01-01
  • 2011-05-29
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-01-31
  • 1970-01-01
相关资源
最近更新 更多