wcf - 由于以下错误,检索具有 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 工作正常)
解决方案
简而言之,问题是我在 IIS10 上运行的 WCF Web 服务需要获得执行 32 位进程外服务器的权限。
功能 IIS 配置为:
AppPool\DefaultWebSite 必须设置为“Classic”;
ISS\默认网站\身份验证:启用匿名身份验证;
IIS\应用程序池\默认网站:托管管道模式:经典;允许 32 位应用程序:True;身份:本地系统;
最后一点,“本地系统”是我错了
推荐阅读
- html - css 伪元素怪异行为
- migration - 如何在 GTK-3 中将文本准确插入 Gtk::ProgressBar(就像在 GTK-2 中一样)
- php - 在搜索结果中包含类别 - Wordpress
- kubernetes - 使用 EFS csi 驱动程序,我是否为具有相同 volumeHandle 的每个路径创建多个 PV,以及如何为 PVC 指定哪个 PV?
- angular - 无法从角度服务访问方法
- python - NumPy - 获取每行的最小值并保持形状
- avro - Kafka 生产者 - 如何在不停机和保留消息顺序的情况下更改主题?
- javascript - 如何过滤 EXTJS 网格列表过滤器?
- sql-server - 在sql中使用if存在或不存在
- python - 如何将json写入pandas DataFrame?