65.9K
CodeProject 正在变化。 阅读更多。
Home

你需要知道的4个服务器日志来排查ASP.NET请求失败

starIconstarIconstarIconstarIconstarIcon

5.00/5 (6投票s)

2017年1月23日

CPOL

3分钟阅读

viewsIcon

20036

了解追踪ASP.NET请求错误时需要知道的4个不同的日志来源。

你的web应用程序抛出某种错误或无效响应。你知道如何在你的服务器上排查IIS或ASP.NET错误吗?幸运的是,Windows和ASP.NET提供了几个不同的日志来记录失败的请求。

你可能熟悉普通的IIS日志,但是如果你正在寻找更详细的错误消息或者在IIS日志文件中找不到任何内容,那么还有一些其他地方可以查看。

1. 标准IIS日志

标准IIS日志将包含通过你的IIS站点的所有web请求。通过IIS管理器,你可以验证你的IIS日志是否已启用以及写入位置。

你应该在以你的W3SVC站点ID号命名的文件夹中找到你的日志。

默认情况下,你的IIS日志中每个记录的请求都包含几个关键字段,包括URL、查询字符串和通过状态、子状态和Win32状态的错误代码。这些状态代码可以帮助更详细地识别实际错误。

#Fields: date time s-ip cs-method cs-uri-stem cs-uri-query s-port cs-username c-ip cs(User-Agent) cs(Referer) sc-status sc-substatus sc-win32-status time-taken
2016-09-13 21:45:10 ::1 GET /webapp2 - 80 - ::1 Mozilla/5.0 - 500 0 0 5502
2016-09-13 21:45:10 ::1 GET /favicon.ico - 80 - ::1 Mozilla/5.0 https:///webapp2 404 0 2 4

“sc-status”和“sc-substatus”字段是标准的HTTP状态代码,例如200表示成功,404、500表示错误等。

“sc-win32-status”可以提供更多细节,除非你查找代码,否则你不会知道。它们是基本的Win32错误代码

2. 在IIS日志中找不到你的请求?HTTPERR是你的IIS错误日志

每个web请求都应该显示在你的IIS日志中。如果没有,则请求可能从未到达IIS,或者IIS未运行。此外,请确保你的IIS日志记录已启用。

进入服务器的请求首先通过HTTP.SYS路由,然后才传递给IIS。这些类型的错误记录在HTTPERR中。常见的错误包括400错误请求、超时、503服务不可用以及类似的问题。内置的错误消息和HTTP.SYS的错误代码通常非常详细。

HTTPERR错误日志在哪里?
C:\Windows\System32\LogFiles\HTTPERR

3. 在Windows事件查看器中查找ASP.NET异常

默认情况下,ASP.NET会将未处理的500级异常记录到Windows应用程序事件日志中。这是由ASP.NET健康监控功能处理的。你可以通过web.config文件中的system.web/healthMonitoring控制其设置。

很少有人意识到写入应用程序事件日志的错误数量是**速率受限的**。所以你可能找不到你的错误!默认情况下,它每分钟只记录一次相同类型的错误。你也可以禁用将任何错误写入应用程序事件日志。

仍然找不到你的异常?

取决于你是否使用WebForms、MVC、Web API、WCF或其他框架,你可能遇到ASP.NET根本没有将任何错误写入ASP.NET的问题,这是由于与健康监控功能的兼容性问题。

4. 为高级IIS错误日志启用失败请求跟踪

失败请求跟踪(FRT)可能是IIS中使用最少的特性之一。它提供强大的IIS日志记录,并作为优秀的IIS错误日志。FRT在IIS管理器中启用,并且可以通过规则针对所有请求、慢速请求或仅某些响应状态代码进行配置。

FRT的唯一问题是它非常详细。它跟踪IIS管道的每一个细节和每一个步骤。你可能会花很多时间来解读单个请求。

© . All rights reserved.