关于Visual Studio:调用COM方法时IIS Web服务发生灾难性故障

Catastrophic failure on IIS Web Service when calling a COM method

也许是人们看到的最糟糕的错误消息类型。并不代表任何意义,可能与一切...

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

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

1
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,这些都无济于事。

我的问题是:

WS如何在VS Development Server上成功运行而在IIS上失败? IIS设置中我还应该更改什么?


确实可以咨询COM DLL的生产者。他们为DLL提供了明确的安装过程,但我以某种方式省略了该过程。

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

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

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

就我而言,我正在玩所有这些项目,但从未按正确的顺序进行。最终,生产者的帮助已经到来,这显示了正确的道路。