事情的经过是这样的:
下午下班的铃声已经敲响,我已经整装待发。突然同事说某水司的微信公众号不能正常访问了。点击营业厅,直接提示
Service Unavailable
。
立马远程服务器查看,IIS微信公众号所在应用程序池停止运行啦。再次启动后,点击营业厅仍然返回
Service Unavailable
,应用程序池再次停止运行。
这时另外一个同事说,他在这台服务器上安装了
WebPlatformInstaller_x64_en-US
要做负载均衡。安装之后出现了应用程序池自动关闭的问题,但是已经卸载了,还是会自动停止。
现在问题明确了,安装WebPlatformInstaller_x64_en-US
,导致了IIS应用被访问时,应用程序池自动关闭的问题。
1. 查看windows系统日志
模块 DLL C:\Windows\system32\inetsrv\rewrite.dll 未能加载。返回的数据为错误信息。
WebPlatformInstaller_x64_en-US
安装是用来做负载均衡的,所以确实会安装rewrite.dll,但是WebPlatformInstaller_x64_en-US
已经卸载了,为什么还要去找rewrite.dll呢。重新安装WebPlatformInstaller_x64_en-US
,这次对应路径下有rewrite.dll了,但是windows日志还是报同样的错误。
2. rewrite_amd64重装
IIS本身是具备URL重写功能的,因此推测应该是,WebPlatformInstaller_x64_en-US
所安装替换的rewrite.dll与IIS不兼容导致的。于是再次卸载WebPlatformInstaller_x64_en-US
,并下载安装rewrite_amd64
(IIS Url Rewrite Module 2.0),至此问题解决。
总结
1.遇到问题一定要透过现象看本质,通过各种日志及环境变化,定位问题,不能局限于问题表现。
2.WebPlatformInstaller_x64_en-US
这个负载均衡模块我们在其他客户现场是有使用过的,这次为什么不兼容,还有待进一步探究。