标题:[SBS]解决在 SBS2011 上因压缩模块导致的 HTTP 500.19 故障问题 出处:gOxiA=苏繁=SuFan Blog 时间:Mon, 17 Jun 2013 16:00:17 +0000 作者:gOxiA 地址:https://sufan.maytide.net/read.php/1679.htm 内容: 解决在 SBS2011 上因压缩模块导致的 HTTP 500.19 故障问题 前一篇与大家分享了因开启 32BitApponWin64 后出现的 HTTP 503 故障问题(http://goxia.maytide.net/read.php/1678.htm),而本篇还是与 IIS 和 ASP 有关。接二连三出现问题也并不是 gOxiA 所希望看到的结果,但是之前在调试那个 ASP 程序时确实很不顺利,在 503 故障解决之后紧接着就是 500.19 故障。 大家知道 500.19 是常见故障,导致该问题的出现原因有很多,如果仅是单纯看错误摘要“无法访问请求的页面,因为该页的相关配置数据无效”,是很难确定故障原因的。 所以我们需要将重点放在详细错误信息中,以本案为例,参考下图可看到在详细错误信息中提示“模块 DynamicCompressionModule”出现错误,错误代码为“0x8007007e”。 检查了 Windows Server 2012 Essentials 环境,发现该 ASP 程序所在网站也启用了压缩模块,但访问是正常的。此外在 iis.net 上找到一篇相关的帖子 http://forums.iis.net/t/1149768.aspx/1/10,貌似与 SBS2011 上集成的服务应用有关,尤其是 WSUS,涉及文件“suscomp.dll”,suscomp.dll 是 WSUS 的专用压缩模块。 起初,gOxiA 参考帖子直接将加载的 suscomp.dll 语句注释掉以禁用加载,之后测试 ASP 程序确实就正常了,但这样以来就要牺牲掉 WSUS 的压缩模块。suscomp.dll 属于全局类型的模块,它根据压缩的类型(动态或静态)由 IIS 的 compdyn.dll 和 compstat.dll 进行调用,所以在 IIS 管理器的站点模块管理中也找不到对应的配置信息,所以单独对站点禁用该模块是不可能的。 此外想单纯通过禁用站点的压缩功能也是不行的,因为相关的模块还是被加载了,只要加载就会导致故障的出现。 所以要彻底解决这一故障的唯一办法就是将对应站点中的动态和静态压缩模块全部给删除掉,不予以加载。要直接为单独某个站点删除模块,是不行的!会提示错误“锁定冲突”…… 为此,要修改 IIS 服务设置,即在 IIS 管理器里选中当前服务器,通过内容窗体中的“模块”进入其设置,找到对应的模块(如:DynamicCompressionModule),在任务窗体中点击“解除锁定”,之后才能在对应站点中对模块进行删除。 因为涉及到的是全局的 suscomp.dll 模块,所以为了保证 ASP 程序正常访问,除了要删除 动态压缩模块以外,同时还要删除静态压缩模块(StaticCompressionModule)。现在 ASP 程序便可正常访问了,而且也不会影响到 WSUS 服务。(PS:不能再拖了,要尽快完成 SBS2011Std 到 WS2012Ess 的升迁工作!!!) Generated by Bo-blog 2.1.1 Release