【问题标题】:Catastrophic failure on IIS Web Service when calling a COM method调用 COM 方法时 IIS Web 服务发生灾难性故障
【发布时间】:2012-04-06 18:29:43
【问题描述】:

也许是人们能看到的最糟糕的错误消息类型。不代表什么,可能与一切有关……

我尝试在 IIS 7.5 上创建 Web 服务 (WS)(我最初尝试过 WCF 服务,但情况相同) WS 使用一个成功注册的 COM DLL,并给出了 COM 安全权限。

当我使用 Visual Studio Development Server 运行 WS 时,一切都很好,我得到了所要求的结果。但是当我尝试将 WS 部署到 IIS 时,我最终得到了

System.Runtime.InteropServices.COMException: Catastrophic failure

我的电脑装有 Windows Server 2008 R2 Standard,x64。 我必须强调:我开发(使用Visual Studio 2010 Ultimate),测试(使用Visual Studio Development Server)并部署(使用IIS 7.5)同一台计算机上。

我认为问题可能与 32-64 位不兼容有关,因为我的 COM 支持 32 位。因此,我更改了应用程序池设置以启用 32 位应用程序,在 Visual Studio 中将平台目标更改为 x86,重新部署 WS,这些都没有帮助。

我的问题是:

如何在 VS 开发服务器上成功运行 WS 但在 IIS 上失败? 我还应该在 IIS 设置中更改什么?

【问题讨论】:

  • 尝试安装 Microsoft Visual C++ 2010 Redistributable (64/32)
  • 错误码的名字比较好,E_UNEXPECTED。这是准确的,你没想到它:)
  • 您是否找到有关该错误的任何解决方案?我遇到了同样的错误,但还没有找到任何解决方案。
  • 当我尝试通过 MS-office-visio 的 ODBC 连接到 mysql 数据库时遇到了同样的问题
  • @ftuna:我已收到提供商的解决方案。实际上,COM 注册过程没有完整记录,我所有的“自然”假设都是错误的。我强烈建议联系供应商...

标签: visual-studio iis com x86


【解决方案1】:

咨询 COM DLL 的生产者确实很有帮助。他们给出了一个清晰的 DLL 安装过程,我以某种方式省略了。

故事寓意:尽管您的 Web 服务或网站在 Visual Studio Development Server 下成功运行,但这并不一定意味着您已正确配置 COM DLL 的所有设置。

您可以开始检查以下问题:

  • 注册 COM DLL
  • 使用 dcomcnfg 检查配置设置
  • 如果您的 DLL 没有出现在 dcomcnfg 列表中,那么您可能没有正确注册它。一些注册表编辑器条目可能丢失。
  • 检查您的 IIS 应用程序池设置
  • 您可能需要在 web.config 中模拟
  • 检查事件查看器。它可能包含一些重要的线索

就我而言,我正在玩所有这些项目,但从来没有按照正确的顺序。最后,制作人的帮助已经到来,它显示了正确的路径。

【讨论】:

  • @ftuna:没有一个唯一的正确路径,因为周围有数百万个不同的 COM DLL。如果您仍然好奇 :-) 在我的情况下,提供商告诉我们取消注册 DLL 并注册一些类似的 EXE 版本,添加一些未记录的注册表项,并提供适当的访问权限。而且我觉得提供者希望对这个注册过程保密,因为他们从实现中赚钱......
猜你喜欢
  • 2010-10-14
  • 1970-01-01
  • 1970-01-01
  • 2010-12-04
  • 2016-03-21
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多