1. 常见错误代码
| 状态码 | 含义 | 常见原因 | 排查方向 |
|---|---|---|---|
| 400 | Bad Request | 请求格式错误 | 检查 URL 编码、请求参数 |
| 401 | Unauthorized | 身份验证失败 | 检查认证配置、权限 |
| 403 | Forbidden | 权限拒绝 | 检查 NTFS 权限、IP 限制 |
| 404 | Not Found | 文件不存在 | 检查物理路径、URL 重写规则 |
| 500 | Internal Server Error | 服务器内部错误 | 查看详细错误、事件日志 |
| 502 | Bad Gateway | 上游服务不可达 | 检查应用程序池、后端服务 |
| 503 | Service Unavailable | 服务不可用 | 检查应用程序池状态、队列 |
2. 日志分析技巧
PowerShell - 日志排查命令
# 查看最近的 500 错误
Get-Content "D:\IISLogs\MyWebSite\u_ex$(Get-Date -Format 'yyMMdd').log" | Select-String " 500 "
# 统计各状态码数量
Get-Content "D:\IISLogs\MyWebSite\u_ex$(Get-Date -Format 'yyMMdd').log" | ForEach-Object { ($_ -split ' ')[14] } | Group-Object | Sort-Object Count -Descending
# 查看响应时间最慢的请求
Import-Csv "D:\IISLogs\MyWebSite\u_ex$(Get-Date -Format 'yyMMdd').log" -Delimiter ' ' | Sort-Object 'time-taken' -Descending | Select-Object -First 10 'cs-uri-stem', 'time-taken'
# 检查特定 IP 的访问
Get-Content "D:\IISLogs\MyWebSite\u_ex$(Get-Date -Format 'yyMMdd').log" | Select-String "192.168.10.10"
3. Failed Request Tracing
1
安装 Failed Request Tracing 模块:Install-WindowsFeature -Name Web-Http-Tracing
2
选择网站 → 双击"失败的请求跟踪规则" → 添加规则
3
配置规则:
- 指定要跟踪的内容:状态码 500-999
- 提供程序:选择 WWW Server
- 详细程度:详细
4
触发错误后,查看 %SystemDrive%\inetpub\logs\FailedReqLogFiles\ 下的 XML 报告
PowerShell - 启用 FRT
# 安装模块
Install-WindowsFeature -Name Web-Http-Tracing
# 启用网站的 Failed Request Tracing
Set-WebConfigurationProperty -PSPath "IIS:\Sites\MyWebSite" `
-Filter "system.webServer/tracing/traceFailedRequests" `
-Name "enabled" -Value $true
# 添加跟踪规则
Add-WebConfigurationProperty -PSPath "IIS:\Sites\MyWebSite" `
-Filter "system.webServer/tracing/traceFailedRequests" `
-Name "." -Value @{path="*"}
4. 常见问题
Q1:500 错误但看不到详细信息
IIS 默认隐藏详细错误信息。修改 web.config 添加:<httpErrors errorMode="Detailed" /> 或在 IIS 管理器中配置错误页。
Q2:应用程序池频繁停止
检查事件查看器中 WAS 来源的错误日志。常见原因:应用程序异常、内存超限、依赖服务未启动。
Q3:如何查看实时请求
使用 Worker Processes 功能:IIS 管理器 → 服务器节点 → Worker Processes → 查看当前请求。或使用 netsh http show servicestate 命令。