如何修复Windows XP x64系统中IIS 6的Service Unavailable问题?
我之前在虚拟机里调试老.NET应用时也碰到过一模一样的问题,给你梳理几个针对性的排查步骤,按顺序来应该能搞定:
先确认应用程序池状态,查日志找根因
打开IIS管理器,找到你的应用程序池,先看它是不是处于已停止状态。如果是,右键启动后立刻去事件查看器(控制面板->管理工具->事件查看器->应用程序日志)里找报错信息——比如内存配额耗尽、进程崩溃、权限不足这些日志,能直接帮你定位问题。开启应用程序池的32位兼容模式
Windows XP x64是64位系统,但.NET Framework 1.1没有64位版本!默认IIS 6的应用池是跑在64位模式下的,这会导致.NET 1.1应用完全无法加载。解决步骤:- 右键目标应用程序池 → 属性
- 切换到「常规」标签
- 勾选「启用32位应用程序」,点击确定
- 重启应用池和IIS服务(命令行里敲
iisreset就行)
补全权限细节,别漏了临时目录
虽然你加了Network Service账户,但得确保权限覆盖到关键路径:- 应用物理路径:右键你的应用文件夹 → 属性 → 安全 → 给Network Service添加「读取&执行」「列出文件夹内容」「读取」权限,勾选“将权限应用到子文件夹和文件”
- .NET临时目录:找到
C:\Windows\Microsoft.NET\Framework\v1.1.4322\Temporary ASP.NET Files,同样给Network Service添加「修改」权限——这个目录是.NET编译动态页面用的,没权限肯定跑不起来
重新注册.NET 1.1到IIS
有时候系统更新或者IIS配置变动会导致.NET注册失效,打开管理员权限的命令提示符,运行:C:\Windows\Microsoft.NET\Framework\v1.1.4322\aspnet_regiis.exe -i执行完成后再用
iisreset重启IIS,确保注册生效。排查应用程序池标识与冲突
- 右键应用程序池 → 属性 → 「标识」标签,确认用的是Network Service;如果之前改了其他账户,先切回来试试
- 要是还是不行,可以临时把标识改成Local System(注意:这个权限太高,只用来排查问题,别长期用),如果能正常运行,说明是Network Service的权限还没配置全
检查端口占用情况
虚拟机里有时候会不小心装了其他Web服务(比如Apache)占用了80端口,导致IIS无法正常监听。打开命令提示符敲:netstat -ano | findstr :80看输出里的PID,打开任务管理器找到对应的进程结束掉,再重启IIS试试。
内容的提问来源于stack exchange,提问作者David Lerma Developer




