在开发服务器上我使用IIS Veresion 7.5.7600.16385
为.Net 4.5.1,任何CPU编译的服务
该服务在开发服务器(Win Server 2008 R2)上运行良好。
在客户端的制作服务器上但是我遇到了一些奇怪的问题:
(相同的IIS版本,相同的操作系统版本)
我设置"启用32位应用程序"无法再在浏览器中访问该服务的网址。 (页面不可用)
(我需要32位模式,因为该服务使用一些传统的COM组件)
可能导致这个问题的原因是什么?
任何想法,提示,建议?
<小时/> 的修改
更多详情:
&#34; IIS工作进程&#34;正在运行为&#34; w3wp.exe * 32&#34;
在同一个应用程序池中有一个ClickOnce安装,它的行为相同:64位正常,如果32Bit设置为true则无法访问。
实际上,这个32Bit App-Pool的所有页面都会产生相同的行为(HTTP 500)页面。
答案 0 :(得分:4)
步骤1:在IIS中启用日志记录
为了在IIS中启用更好的错误消息和日志文件,您必须安装两个功能:
控制面板 - &gt;程序和功能 - &gt;打开或关闭Windows功能
您需要安装两个功能:
WebServer-&gt;常见的Http功能 - &gt; HTTP错误
WebServer-&GT;健康诊断 - &gt; HTTP日志记录
第2步:分析错误消息
启用HTTP错误后,当我访问32位应用程序池中的任何页面时,我收到了更详细的消息:
HTTP错误500.19
DynamicCompressionModule
ErrorCode 0x8007007e
第3步:解码错误代码
我使用Microsoft Exchange Server Error Code Look-up将ErrorCode转换为更有用的东西:
C:\ Users \ combyte&gt;错误0x8007007e
作为HRESULT:严重性:FAILURE(1),Facility:0x7,Code 0x7e
...
ERROR_MOD_NOT_FOUND winerror.h
找不到指定的模块。
原来,没有安装特定的DLL。在我的例子中,WSUS(Windows Server Update Services)的安装仅安装了64位版本的DynamicCompressionModule(C:\ Windows \ system32 \ inetsrv \ suscomp.dll)。
<强>解决方法1 强>
使用此命令从IIS配置(对于所有页面/应用程序池)删除/禁用XPress压缩方案:
%windir%\system32\inetsrv\appcmd.exe set config -section:system.webServer/httpCompression /-[name='xpress']
<强>溶液2 强>
禁用32位应用程序池的IIS配置文件xpress
中的C:\Windows\System32\inetsrv\config\ApplicationHost.config
模块加载:
将属性preCondition="bitness64"
添加到第<modules>
部分中的xpress模块:
<add name="DynamicCompressionModule" lockItem="true" preCondition="bitness64" />
<强> Solution3 强>
安装32位版本的suscomp.dll
(从WSUS的32位安装)到%windir%\SYSWOW64\inetsrv\