我想我在 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 错误。
这是一个错误还是我错过了什么?