DrK*_*och 0 web-services windows-server-2008 iis-7.5 .net-4.5
在开发服务器上我使用 IIS Veresion 7.5.7600.16385
以及为 .Net 4.5.1 编译的服务,任何 CPU
该服务在开发服务器 (Win Server 2008 R2) 上运行良好。
但是在客户端的生产服务器上,我遇到了奇怪的问题:
(相同的 IIS 版本,相同的操作系统版本)
一旦我设置了“启用 32 位应用程序”,就无法在浏览器中访问该服务的URL。(页面不可用)
(我需要 32Bit 模式,因为该服务使用了一些旧的 COM 组件)
什么可能导致这些问题?
任何想法,提示,建议?
更多细节:
“IIS 工作进程”作为“w3wp.exe *32”运行
在同一个应用程序池中有一个 ClickOnce 安装,其行为相同:在 64 位下工作正常,如果 32Bit 设置为 true,则无法访问。
事实上,这个 32Bit App-Pool 的所有页面都产生了相同的行为 (HTTP 500) 页面未找到。
步骤 1:在 IIS 中启用登录
为了在 IIS 中启用更好的错误消息和日志文件,您必须安装两个功能:
控制面板->程序和功能->打开或关闭Windows功能
您需要安装两个功能:
WebServer->Common Http Features->HTTP Errors
WebServer-> Health an Diagnostics->HTTP Logging
步骤 2:分析错误消息
启用 HTTP 错误后,当我访问 32 位应用程序池中的任何页面时,我收到一条更详细的消息:
HTTP 错误 500.19
动态压缩模块
错误代码 0x8007007e
第 3 步:解码错误代码
我使用Microsoft Exchange Server 错误代码查找将错误代码转换为更有用的内容:
C:\Users\combyte>err 0x8007007e
作为 HRESULT:严重性:失败 (1),设施:0x7,代码 0x7e
...
ERROR_MOD_NOT_FOUND winerror.h
指定的模块无法找到。
事实证明,未安装特定的 DLL。就我而言,WSUS(Windows 服务器更新服务)的安装仅安装了 64 位版本的 DynamicCompressionModule (C:\Windows\system32\inetsrv\suscomp.dll)。
解决方案1
使用以下命令从 IIS 配置(对于所有页面/应用程序池)中删除/禁用 XPress 压缩方案:
%windir%\system32\inetsrv\appcmd.exe set config -section:system.webServer/httpCompression /-[name='xpress']
Run Code Online (Sandbox Code Playgroud)
解决方案2
xpress在C:\Windows\System32\inetsrv\config\ApplicationHost.config32 位应用程序池的IIS 配置文件中禁用模块加载:
将属性添加preCondition="bitness64"到部分中的 xpress 模块<modules>:
<add name="DynamicCompressionModule" lockItem="true" preCondition="bitness64" />
Run Code Online (Sandbox Code Playgroud)
解决方案3
将 32 位版本的suscomp.dll(来自 WSUS 的 32 位安装)安装到%windir%\SYSWOW64\inetsrv\
| 归档时间: |
|
| 查看次数: |
6259 次 |
| 最近记录: |