WindowsIIS网站访问故障排查
约 1267 字
Windows 服务器上 IIS 站点打不开,报错五花八门,但绝大多数落在下表这几类。先按「排查顺序」定位层次,再对号入座查具体报错。
排查顺序
- 本机回环验证:服务器上浏览器访问
http://localhost/——能打开说明站点本身正常,问题在绑定/防火墙/外部链路;打不开则继续往下。 - 站点与应用程序池状态:IIS 管理器(服务器管理器 → 工具 → IIS 管理器)里看站点是否已启动、应用程序池是否"已停止"。503 Service Unavailable 最常见的原因就是应用程序池停了,启动它;若反复自动停止,多为程序崩溃或权限问题,查事件查看器。
- 端口与绑定:
netstat -ano | findstr :80确认 80 在监听;核对站点"绑定"里的 IP/端口/主机名。 - 防火墙与安全组:服务器本地防火墙放行见管理Windows实例的系统防火墙,平台侧安全组放行见安全组与系统防火墙入门。
- 看日志定位:访问日志在
C:\inetpub\logs\LogFiles\(HTTP 状态码+子状态码);应用报错看事件查看器,见Windows服务器系统日志。
常见报错速查
| 现象 | 最可能原因 | 处理 |
|---|---|---|
| 503 | 应用程序池已停止 | 启动应用程序池;反复停止查崩溃日志 |
| 500 | web.config 或代码出错 | 见下文「打开详细错误」定位 |
| 403.14 | 缺少默认文档 | 见下文 |
| 403/无法访问(仅本机能开) | 防火墙/安全组/绑定问题 | 按排查顺序 3-4 步处理 |
| Bad Request - Invalid Hostname | 域名未绑定或绑定写错 | 见下文 |
| 0x80070002 | ASP.NET 注册损坏 | 见下文 |
| 500.19 | web.config 格式错误 | 见下文 |
打开详细错误(排 500)
IIS 默认对远程访问隐藏详细报错,只显示"500 - 内部服务器错误"。定位时临时打开:
IIS 管理器选中站点 → 双击「错误页」→ 右侧「编辑功能设置」→ 选「详细错误」→ 确定,然后 Ctrl+F5 强刷页面即可看到具体出错文件与行号。
修完务必改回,详细错误会向访客暴露服务器路径等敏感信息。
403.14 Forbidden:缺少默认文档
站点根目录没有 index.html、default.aspx 之类的默认文档,且 IIS 默认禁用目录浏览:
- 推荐:IIS 区域双击「默认文档」→ 确认功能已启用 → 添加实际存在的入口文件名(如
index.php); - 临时浏览目录结构可启用「目录浏览」,但有暴露文件清单的安全风险,用完关掉。
Bad Request - Invalid Hostname
请求的域名与站点绑定的主机名对不上:绑定漏了该域名、拼写错误、或 IP/端口填错。
IIS 管理器选中站点 → 右侧「绑定」→ 添加(补绑域名)或双击修改(改主机名/端口),保存后无需重启即可生效。
顺带一提:给绑定只留域名、去掉空主机名记录,还能顺便禁止别人把未备案域名解析到你的公网 IP 上蹭访问。
0x80070002 系统找不到指定的文件
ASP.NET 处理程序映射损坏(常见于 .NET Framework 安装顺序不当)。管理员命令行重注册(以 .NET 4.x 为例):
cd /d C:\Windows\Microsoft.NET\Framework64\v4.0.30319
aspnet_regiis.exe -u
aspnet_regiis.exe -i
iisreset /noforce500.19 配置文件错误
web.config 或 ApplicationHost.config 中存在格式错误/无法识别的配置节点。常见触发:手改 XML 出语法错、URL 重写模块未安装但 web.config 里写了 rewrite 节点、站点目录权限不足读不到 web.config。
- 用「浏览」进入站点目录检查 web.config(XML 必须格式合法);
- 检查
C:\Windows\System32\inetsrv\config\ApplicationHost.config; - 装齐所需组件(如 URL 重写模块)后
iisreset /noforce重启验证。
端口被占用
网站启动失败或改端口后仍不通,先查端口被谁占着(管理员 PowerShell):
Get-NetTCPConnection -LocalPort 80 | Select-Object State,OwningProcess
Get-Process -Id 4 # 用上一步的 PID 查进程名- 占用进程可以停就停:
taskkill /F /PID <PID>; - 不能停就给站点换端口(IIS「绑定」里改,建议用 8000-49151 注册端口范围),改完
iisreset /noforce。
PID 4 占用 80 通常是 Windows 自带的 Http.sys/其他服务在用,此时改站点端口比自己折腾系统组件快得多。
FTP 站点报 534 Policy requires SSL
客户端用 FTPS(显式 TLS)连接,但 IIS 的 FTP 站点 SSL 策略为"要求/拒绝"冲突:选中 FTP 站点 → 双击「FTP SSL 设置」→ 策略改为「允许 SSL 连接」→ 应用重连。FTP 站点搭建见搭建FTP站点(Windows)。
仍解决不了
带着日志来提工单:截取 C:\inetpub\logs\LogFiles\ 中对应时段的日志行、事件查看器里应用程序/系统日志的红叉记录,以及报错页面截图,处理效率最高。工单入口见工单及售后支持。
