我创建了一个 Windows 服务(一个基于 Visual Studio ATL 向导的 exe),它公开了一个 COM 接口。作为进程内服务器或 Windows 服务运行没有问题。我需要一个 Windows 服务,因为我需要一些进程在 IIS 访问之外可用。
我一直在创建一些网页 (aspx/C#) 来调用我的服务,并且在 Visual Studio .NET 开发服务器中测试一切正常。现在,我正在尝试将网页推送到 IIS 7(在 Windows 7 上运行)以进行进一步测试。但是,当页面在 IIS 下运行时,对我的 COM 接口的调用都失败并出现错误
“由于以下错误,检索组件的 COM 类工厂失败:80070005 访问被拒绝。(来自 HRESULT 的异常:0x80070005 (E_ACCESSDENIED))。”
我已验证该服务是:
- 在 HKCR\Clsid\ 下向 Windows 注册(注意,我注册了运行“myservice.exe /RegServer”,因为 regsvr32.exe 仅适用于 dll)
- myservice.exe 具有 IIS_IUSRS 用户的读取和执行权限
- 是一个 64 位的 exe(所以应该在默认的 IIS 应用程序池空间中加载)
- 在 .NET 开发服务器调试器(但不是 IIS)中运行良好
任何想法为什么这不起作用?与 exe vs dll 中包含的 COM 接口有关吗?
IIS 调用 Windows 服务中公开的 COM 接口的任何可能性?