
某天,一个系统的登录页面无法正确显示,出现了“Service Unavailable HTTP Error 503. The service is unavailable”的错误提示。管理员立即登录服务器检查IIS(Internet Information Services)状态。打开IIS后,发现应用程序池的状态显示为已停止。尝试启动后,登录页面仍然无法加载,错误代码仍为503。
随后,管理员通过网上搜索找到了针对此错误的解决方法。在尝试更改应用程序池中的某些设置后,问题仍未得到解决。查看系统日志,发现应用程序池被自动禁用,原因是提供服务的进程出现了连续错误。
进一步查看应用程序日志,发现DLL模块无法加载,具体是C:Program Files (x86)IISAsp.Net Core ModuleV2aspnetcorev2.dll无法加载并返回了错误信息。由于此错误与Net Core有关,管理员开始怀疑服务器上是否安装了Net Core运行时环境。虽然这台WIN2008服务器上没有明确安装过Net Core,但查看控制面板的程序发现同事最近安装了.net7.0和.NET Framework4.5。由于Net Core runtime依赖于vc_redist.x64运行,因此服务器上需要安装vc_redist.x64才能运行Net Core项目。尝试安装时却失败了,原因是需要先安装某些补丁。但由于生产服务器无法连接外网,且未找到适用于2008系统的补丁,这一解决方案并未成功。
于是管理员继续深入研究,找到了IIS的配置文件ApplicationHost.config。这个文件包含了所有站点、应用程序、虚拟目录和应用程序池的定义,以及Web服务器的全局默认设置。在ApplicationHost.config的modules元素中注册了许多模块,这些模块被IIS承载的所有应用程序使用。
