首页 > 解决方案 > 由于以下错误,检索具有 CLSID {blah blah blah} 的组件的 COM 类工厂失败:80070005 访问被拒绝

问题描述

我有一个用 VS2013 C# 编写的 WebService,其中包括一个名为 StatConnectorSrv 的嵌入式程序集。StatConnectorSrv 与名为 StatConnDCOM 的第三方程序交互以运行另一个名为“R”的程序。该服务在带有 IIS 10 的 Windows Server 2016 上运行。该服务在初始化 StatConnector 之前运行良好。我收到问题标题中显示的访问被拒绝错误。使用 StatConnector 的控制台测试程序在服务器上运行良好,因此问题是让我的 Web 服务代码启动 StatConnector dll。我正在使用 StatConnDCOM 和 R 的 32 位版本。

在 IIS 中启用 32 位进程 在 IIS 中启用匿名身份验证(设置为特定用户 - IUSR) IIS\AppPool\Default Web Site\Advanced\Process Model\Identity:设置为 Network Service 或 ApplicationPoolIdentity 没有帮助。在 Component Services\StatConnectorSrv 中:授予 IIS 匿名用户启动和激活的完全权限以及访问权限

该服务读取带有输入变量的 XML 消息,使用 StatConnDCOM 通过 R 运行一些计算,然后返回带有结果的 XML 消息。网络服务代码无法初始化 StatConnDCOM(但是当我使用控制台程序调用它时,StatConnDCOM 工作正常)

标签: wcfiiscom

解决方案


简而言之,问题是我在 IIS10 上运行的 WCF Web 服务需要获得执行 32 位进程外服务器的权限。

功能 IIS 配置为: AppPool\DefaultWebSite 必须设置为“Classic”;
ISS\默认网站\身份验证:启用匿名身份验证;

IIS\应用程序池\默认网站:托管管道模式:经典;允许 32 位应用程序:True;身份:本地系统;

最后一点,“本地系统”是我错了


推荐阅读