设置为 true 时无法访问"Enable 32-Bit Applications"服务



在开发服务器上我使用iis veresion 7.5.7600.16385

和为.NET 4.5.1编译的服务,任何CPU

该服务在开发服务器上正常运行(Win Server 2008 R2)。

在客户端的生产服务器上我遇到了奇怪的问题:

(相同的IIS版本,相同的OS版本)

我一旦设置"启用32位应用程序",在浏览器中不再访问服务的 URL。(页面不可用)

(我需要32位模式,因为该服务使用一些旧版COM组件)

什么可能导致此问题?

有什么想法,提示,建议?


编辑

更多详细信息:

" IIS工作过程"以" w3wp.exe *32"

运行

在同一应用程序池中有一个ClickOnce安装,其行为相同:在64位中运行正常,如果32位设置为true,则无法访问。

实际上,该32位应用程序的所有页面都找不到相同的行为(http 500)页面。

步骤1:启用IIS

为了在IIS中启用更好的错误消息和日志文件,您必须安装两个功能:

控制面板 - >程序和功能 - >打开或关闭Windows功能

您需要安装两个功能:

Weberver->常见的HTTP功能 - > http错误

web服务器 - >健康诊断 - > http记录

步骤2:分析错误消息

启用了HTTP错误,当我访问32bit App池中的任何页面时,我收到了更多的冗长消息:

http错误500.19

dynamicCompressionModule

错误代码0x8007007e

步骤3:解码错误代码

我使用Microsoft Exchange Server错误代码查找将错误代码转换为更有用的东西:

c: users combyte> err 0x8007007e

作为hresult:严重性:失败(1),设施:0x7,代码0x7e

...

error_mod_not_found winerror.h

找不到指定的模块。

事实证明,没有安装特定的DLL。在我的情况下,WSUS(Windows Server Update Services)的安装安装了DynamicCompressionModule的64位版本(C: Windows System32 Inetsrv suscomp.dll)。

解决方案1

使用此命令从IIS配置(对于所有页面/App-Pools)中删除/禁用XPRESS压缩方案:

%windir%system32inetsrvappcmd.exe set config -section:system.webServer/httpCompression /-[name='xpress']

解决方案2

禁用IIS配置文件中xpress模块的加载C:WindowsSystem32inetsrvconfigApplicationHost.config for 32bit App-Pools:

将属性preCondition="bitness64"添加到<modules>中的Xpress模块:

<add name="DynamicCompressionModule" lockItem="true" preCondition="bitness64" />

解决方案3

suscomp.dll的32位版本(从WSU的32位安装)安装到%windir%SYSWOW64inetsrv

最新更新