调用COM方法时IIS Web服务上的灾难性故障

时间:2012-03-22 07:37:52

标签: visual-studio iis com x86

可能是人们可以看到的最糟糕的错误消息类型。没有任何意义,可能与一切有关......

我尝试在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,这些都没有帮助。

我的问题是:

WS如何在VS Development Server上成功运行但在IIS上失败?在IIS设置中我还能改变什么?

1 个答案:

答案 0 :(得分:1)

咨询COM DLL的生产者真的很有帮助。他们为DLL提供了一个明确的安装过程,我已经以某种方式省略了。

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

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

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

在我的情况下,我正在玩所有这些项目,但从来没有按照正确的顺序。最后,生产者的帮助已经到了,这显示了正确的路径。