排查思路总览
请按照以下步骤逐一检查,这能帮你解决 90% 以上的此类问题。

(图片来源网络,侵删)
- 第一步:确认问题范围(“是所有网站都错,还是只有一个?”)
- 第二步:检查客户端和基础网络(“是不是我的网络或浏览器问题?”)
- 第三步:检查 IIS 核心配置(“网站本身是否正确配置?”)
- 第四步:检查应用程序和代码(“网站程序本身是否有问题?”)
- 第五步:检查高级功能和权限(“是否是权限或模块冲突?”)
- 第六步:查看错误详情(“如何找到真正的错误原因?”)
第一步:确认问题范围
这是最重要的一步,它决定了你的排查方向。
- A. 只有这一个网站报错?
- 如果其他网站都正常访问,那么问题很可能出在这个特定网站的配置上。
- B. 所有网站都报错,甚至 IIS 主页也无法访问?
- 这说明问题出在 IIS 的全局配置、服务状态或系统层面。
第二步:检查客户端和基础网络
在动服务器之前,先排除客户端问题。
- 刷新浏览器和清空缓存:按
Ctrl + F5强制刷新,清除浏览器缓存。 - 尝试不同浏览器:用 Chrome, Edge, Firefox 等不同浏览器访问,排除浏览器插件或兼容性问题。
- 检查 DNS:在服务器命令提示符(CMD)中运行
nslookup 你的域名,看是否能正确解析到服务器的 IP 地址。 - 检查网络连通性:
- 在客户端电脑上
ping服务器 IP,看是否能通。 - 在客户端电脑上
telnet服务器的 80 端口(HTTP)或 443 端口(HTTPS)。- Windows:打开 CMD,输入
telnet 服务器IP 80,如果窗口黑一下然后关闭,说明端口是通的,如果提示“无法打开到主机的连接”,说明网络不通或防火墙拦截了。
- Windows:打开 CMD,输入
- 注意:Windows 默认没有安装 Telnet 客户端,需要通过“启用或关闭 Windows 功能”来安装。
- 在客户端电脑上
第三步:检查 IIS 核心配置
这是最常见的问题区域,请仔细检查。
情况 A:只有这个网站报错
-
检查网站状态:
(图片来源网络,侵删)- 打开 IIS 管理器。
- 在左侧“连接”面板中,找到你的网站。
- 在中间的“操作”面板中,确保网站状态是 “已启动”,如果不是,右键点击网站 -> “管理网站” -> “启动”。
-
检查绑定:
- 右键点击你的网站 -> “管理网站” -> “绑定...”。
- 检查 类型(HTTP/HTTPS)、IP 地址(通常是 "All Unassigned")、端口(HTTP 默认 80,HTTPS 默认 443)和 主机名(你的域名,留空则表示通过 IP 访问)是否正确。
- 常见问题:
- 端口被其他程序占用。
- 域名输入错误。
- IP 地址绑定错误(如果服务器有多个网卡)。
-
检查物理路径:
- 右键点击你的网站 -> “管理网站” -> “高级设置...”。
- 检查 “物理路径” 是否指向了你网站文件所在的正确文件夹。
- 检查这个文件夹的权限是否正确(见第五步)。
-
检查应用程序池:
- 在 IIS 管理器左侧,点击“应用程序池”。
- 找到你的网站正在使用的应用程序池(可以在网站“基本设置”里查看)。
- 确保该应用程序池的状态是 “启动”。
- 双击打开应用程序池的“高级设置”:
- .NET CLR 版本:确保选择你的项目所需的 .NET 版本(如
无托管代码、v4.0等)。 - 托管管道模式:对于 ASP.NET 网站,必须是 “集成” 模式,对于旧版 ASP,可能是“经典”模式。
- .NET CLR 版本:确保选择你的项目所需的 .NET 版本(如
情况 B:所有网站都报错
-
检查 IIS 服务状态:
(图片来源网络,侵删)- 按
Win + R,输入services.msc并回车。 - 找到 World Wide Web Publishing Service (W3SVC) 服务。
- 确保其状态是 “正在运行”,启动类型”是“自动”,如果不是,右键点击 -> “启动”。
- 按
-
检查系统防火墙:
- 打开 “Windows Defender 防火墙”。
- 点击左侧的 “允许应用或功能通过 Windows Defender 防火墙”。
- 确保列表中 “World Wide Web 服务 (HTTP)” 是勾选状态,并且是“专用”和“公用”网络都允许。
- 或者,为了快速测试,你可以临时关闭防火墙,看网站是否能访问,如果能,说明就是防火墙规则的问题。
-
检查端口占用:
- 在服务器上打开 CMD,运行
netstat -ano | findstr :80。 - 如果看到除了
svchost.exe之外的其他进程占用了 80 端口,说明有冲突,你需要找到并停止那个进程,或者更改 IIS 的绑定端口。
- 在服务器上打开 CMD,运行
第四步:检查应用程序和代码
如果网站配置都正确,但依然报错,可能是程序本身的问题。
-
检查默认文档:
- 在 IIS 管理器中,双击你的网站。
- 在中间窗口找到并双击“默认文档”。
- 确保列表中有你的网站首页文件名,如
index.html,default.aspx,Default.htm等,并且它没有被禁用。
-
检查网站根目录文件:
- 进入你设置的“物理路径”,检查里面是否有网站文件。
- 网站文件可能被误删或移动。
-
检查代码错误:
- 如果这是一个动态网站(如 ASP.NET, PHP, JSP),代码中可能有语法错误或运行时错误。
- 这时候,查看详细的错误日志(见第六步)是关键。
第五步:检查高级功能和权限
-
文件夹权限:
- 右键点击网站的“物理路径”文件夹 -> “属性” -> “安全” 选项卡。
- 确保以下用户或组至少有 “读取” 和 “列出文件夹内容” 权限:
- IIS_IUSRS:IIS 服务的默认用户组。
- SYSTEM:系统账户。
- 如果你的网站需要写入文件(如上传图片),还需要 “修改” 权限。
- 特别注意:不要轻易给
Users组或Everyone组过高的权限。
-
应用程序池标识:
- 在 IIS 管理器中,双击你的“应用程序池”。
- 在右侧“操作”面板中,点击“高级设置”。
- 找到 “进程模型” -> “标识”。
- 默认是
ApplicationPoolIdentity(应用程序池标识),这意味着 IIS 会创建一个名为IIS AppPool\你的应用程序池名的虚拟账户,这个账户需要你手动在网站文件夹的“安全”选项卡中添加并授予权限。 - 为了方便测试,你可以暂时将其更改为
LocalSystem(本地系统账户),它拥有最高权限,如果改后网站能访问,就说明是权限问题,你需要为ApplicationPoolIdentity账户正确设置权限。
第六步:查看错误详情(最关键的一步)
当页面只显示“无法显示该页面”时,服务器上其实记录了真正的错误原因,你需要学会如何查看它。
-
启用详细错误信息(仅用于排查,生产环境请关闭):
- 在 IIS 管理器中,双击你的网站。
- 在中间窗口找到并双击“错误页”。
- 在右侧“操作”面板中,点击“设置...”。
- 将“错误页”设置为 “详细错误”,这样,当发生错误时,浏览器可能会显示更详细的错误信息,HTTP 500.19(配置错误)。
-
查看 IIS 日志文件:
- IIS 默认会记录所有访问请求的日志。
- 日志文件位置:
C:\inetpub\logs\LogFiles\ - 进入
W3SVC1(数字可能不同)文件夹,里面是按日期命名的.log文件。 - 用记事本或 Excel 打开最新的日志文件。
- 关注
sc-status列:200:成功。404:未找到文件(通常是路径或文件名错误)。403:禁止访问(通常是权限问题)。500:内部服务器错误(通常是代码或配置错误)。
- 关注
sc-substatus和sc-win32-status列,它们会提供更具体的错误代码,帮助你精确定位问题。19错误表示配置文件权限不足。
-
查看 Windows 事件查看器:
- 按
Win + R,输入eventvwr.msc并回车。 - 展开 “Windows 日志” -> “应用程序”。
- 在右侧的“筛选当前日志...”中,可以设置事件来源为
ASP.NET或W3SVC。 - 这里会记录很多 IIS 和应用程序级别的详细错误信息,是排查疑难杂症的宝库。
- 按
总结与快速自查清单
如果觉得上面太复杂,可以按这个顺序快速过一遍:
- IIS 服务是否启动? (
services.msc-> W3SVC) - 网站状态是否启动? (IIS 管理器 -> 你的网站)
- 网站绑定是否正确? (IP, 端口, 域名)
- 物理路径是否存在? (路径是否正确)
- 文件夹权限够不够? (IIS_IUSRS, SYSTEM 至少有“读取”)
- 应用程序池是否启动?
- 系统防火墙是否放行了 80/443 端口?
- 浏览器清缓存,换个浏览器试试?
- 查看 IIS 日志和事件查看器,找到具体的错误代码!
通过以上步骤,你应该能够找到并解决 "IIS 网站无法显示该页面" 的问题,如果问题依然存在,请提供你排查到哪一步,以及具体的错误代码或日志信息,这样可以获得更精准的帮助。
