【发布时间】:2010-08-26 08:55:41
【问题描述】:
我们正在将我们的应用程序从 Windows Server 2003 迁移到 Windows Server 2008 R2。我在迁移过程中遇到了一些问题。
我在 Windows Server 2008 R2 中部署了许多 COM+ 组件(32 位)和 DCOM 组件(32 位)。这些 COM+ 和 DCOM 组件是 VC++ 代码。
我在同一台服务器上部署了一个 .net 3.5 服务 32 位,它调用上面提到的 COM+ 组件。
每当我尝试启动服务时,它都不会启动并在事件日志中引发多个错误。
我们得到的主要错误是远程过程调用失败错误**。(**远程过程调用失败。(来自HRESULT的异常:0x800706BE))****根据调试期间的观察,COM对象是已创建,但调用某个方法时会抛出远程过程异常。
在 Win 2003 Server Box 中同样可以正常工作。
错误
第一个错误:
错误应用程序名称:dllhost.exe,版本:6.1.7600.16385,时间戳:0x4a5bc6b7
错误模块名称:KERNELBASE.dll,版本:6.1.7600.16385,时间戳:0x4a5bdbdf
异常代码:0xe06d7363
故障偏移:0x0000b727
故障进程ID:0x8ac
错误的应用程序启动时间:0x01cb437094216ea7
错误的应用程序路径:C:\Windows\SysWOW64\dllhost.exe
错误模块路径:C:\Windows\syswow64\KERNELBASE.dll
报告 ID:d25f6a31-af63-11df-8252-0050568e251b
第二个错误:
系统调用了一个自定义组件,该组件发生故障并产生异常。这表明自定义组件存在问题。通知该组件的开发人员发生故障并向他们提供以下信息。
服务器应用程序 ID:{727318BC-A725-4ED6-8DDD-9DE80262D3CA}
服务器应用程序实例 ID:
{739972C1-74DA-4169-A093-32AAAA965EC9}
服务器应用程序名称:
此错误的严重性质已导致进程终止。
例外:E06D7363
第三个错误:
故障桶,类型 0
活动名称:APPRCASH
回应:不可用
驾驶室编号:0
问题签名:
P1:dllhost.exe
P2:6.1.7600.16385
P3: 4a5bc6b7
P4: KERNELBASE.dll
P5:6.1.7600.16385
P6: 4a5bdbdf
P7: e06d7363
P8: 0000b727
P9:
P10:
附件:
这些文件可能在此处可用:
C:\ProgramData\Microsoft\Windows\WER\ReportQueue\AppCrash_dllhost.exe_58c2666ce94b9901a2cc454f2e8cd8cc5742421_085d298c
分析符号:
重新检查解决方案:0
报告 ID:d25f6a31-af63-11df-8252-0050568e251b
第 4 个错误:
故障桶,类型 0
活动名称:APPRCASH
回应:不可用
驾驶室编号:0
问题签名:
P1:dllhost.exe
P2:6.1.7600.16385
P3: 4a5bc6b7
P4: KERNELBASE.dll
P5:6.1.7600.16385
P6: 4a5bdbdf
P7: e06d7363
P8: 0000b727
P9:
P10:
附件:
这些文件可能在此处可用:
C:\ProgramData\Microsoft\Windows\WER\ReportQueue\AppCrash_dllhost.exe_58c2666ce94b9901a2cc454f2e8cd8cc5742421_085d298c
分析符号:
重新检查解决方案:0
报告 ID:d25f6a31-af63-11df-8252-0050568e251b
报告状态:0
第 5 个错误:
服务无法启动。 System.Runtime.InteropServices.COMException (0x800706BE):远程过程调用失败。 (HRESULT 异常:0x800706BE)
我们根据分析检查了以下内容,
1.权限问题 - 检查是否所有人、经过身份验证的用户、IWAM_ServerName 和 IUSR_ServerName 具有完全控制权。在论坛中看到他们应该对某些系统文件夹具有 NTFS 读取/执行权限。不知道如何检查。
2。 DLL Hell 问题 - 检查注册,一切似乎都很好。
3.进程“位”问题 - 检查注册表,所有条目都在 WoW6432 下,所有应用程序组件都是 32 位的。没有对 64 位组件的进程调用。还将 COM 用于 32 个应用程序。
4.防火墙问题 - 此服务与 COM 组件位于同一台机器上。我们是否应该更改一些与 MSTDC 安全性、高级防火墙配置(如启用 COM+ 入站)相关的设置?我们不确定,因为我们是第一次配置服务器。
- 启用“运行 32 位应用程序”复选框
但以上都无济于事。
此外,我们正在尝试使用示例组件复制该问题。我们创建了一个 .NET 组件并将其部署在 COM+ 中。尝试通过 VB 脚本和 C# 控制台应用程序访问它,它在 Windows 2003 框中运行良好。在 Windows 2008 Server 框中同样不起作用。我们没有收到 RPC 错误,而是出现以下错误,
vb 脚本错误:800a01ad activex 组件无法创建对象
.net 客户端调用 com+:CLASS NOT REGISTERED:HRESULT 0x80040154 (REGDB_E_CLASSNOTREG)
经过分析发现这些问题可能是由于权限问题、dll地狱或进程'bitness'问题。
如果有人能帮助我们解决这个问题,那就太好了。
谢谢, 维杰
【问题讨论】: