当"启用32位应用程序时,服务无法访问"设为true

时间:2015-05-13 06:13:17

标签: web-services iis-7.5 .net-4.5 windows-server-2008

在开发服务器上我使用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)页面。

1 个答案:

答案 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\