我已经看到服务器返回 500 个内部服务器错误代码,并在十进制分隔的子代码中包含额外的“详细信息”,例如 500.19。
这个子代码是标准化的还是我可以自由使用?如何防止在 IIS 或 ASP.NET 中崩溃到供应商代码?
卢克
这个子代码是标准化的还是我可以自由使用?
无法使用它,引用RFC 2616:
Status-Code 元素是一个 3 位整数
MSDN 说HttpResponse.SubStatusCode
:
无论是否配置了跟踪,代码都不会作为对请求的最终响应的一部分发送
因此,它仅用于日志记录和故障排除,不发送给客户端。
有一个Microsoft标准列表。请参阅 - http://support.microsoft.com/kb/943891
IIS 7.0 定义了以下 HTTP 状态代码,指示 500 错误的更具体原因:
- 500.0 - 发生模块或 ISAPI 错误。
- 500.11 - Web 服务器上的应用程序正在关闭。
- 500.12 - 应用程序正忙于在 Web 服务器上重新启动。
- 500.13 - Web 服务器太忙。
- 500.15 - 不允许直接请求 Global.asax。
- 500.19 - 配置数据无效。
- 500.21 - 模块无法识别。
- 500.22 - ASP.NET httpModules 配置不适用于托管管道模式。
- 500.23 - ASP.NET httpHandlers 配置不适用于托管管道模式。
- 500.24 - ASP.NET 模拟配置不适用于托管管道模式。
- 500.50 - 在 RQ_BEGIN_REQUEST 通知处理期间发生重写错误。发生配置或入站规则执行错误。
- 注意 这里是为入站和出站规则读取分布式规则配置的地方。
- 500.51 - 在 GL_PRE_BEGIN_REQUEST 通知处理期间发生重写错误。发生全局配置或全局规则执行错误。
- 注意 这里是读取全局规则配置的地方。
- 500.52 - 在 RQ_SEND_RESPONSE 通知处理期间发生重写错误。发生出站规则执行。
- 500.53 - 在 RQ_RELEASE_REQUEST_STATE 通知处理期间发生重写错误。发生出站规则执行错误。该规则配置为在更新输出用户缓存之前执行。
- 500.100 - 内部 ASP 错误。