由于以下错误,无法为具有CLSID {blah blah blah}的组件检索COM类工厂:80070005访问被拒绝

时间:2019-04-15 11:51:20

标签: wcf iis com

我有一个用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 \默认网站\高级\进程模型\身份:设置为“网络服务”或“ ApplicationPoolIdentity”无济于事。 在Component Services \ StatConnectorSrv中:给IIS匿名用户完整的启动和激活权限以及访问权限

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

1 个答案:

答案 0 :(得分:0)

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

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

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

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