检索具有CLSID {0006F03A-0000-0000-C000-000000000046}的组件的COM类工厂失败

时间:2016-04-04 13:10:56

标签: .net windows c#-4.0 service outlook-2010

我在.Net 4.5中创建了Windows服务。写入了打开Outlook客户端的服务, 从Inbox文件夹中读取电子邮件,下载附件。编写的代码是正确的, 因为我跑了&在控制台应用项目中测试它。 但是当我使用" installutil"安装Web服务时并运行它, 该服务在以下代码行中抛出以下错误:

Outlook.Application myApp = new Outlook.Application();

错误:

  

使用CLSID检索组件的COM类工厂   {0006F03A-0000-0000-C000-000000000046}由于以下原因而失败   错误:80010001被叫方拒绝了呼叫。 (HRESULT的例外情况:   0x80010001(RPC_E_CALL_REJECTED))检索COM类工厂   CLSID为{0006F03A-0000-0000-C000-000000000046}的组件未通过   出现以下错误:80010001被叫方拒绝了呼叫。   (来自HRESULT的异常:0x80010001(RPC_E_CALL_REJECTED))。

仅供参考,该服务未在我的机器上运行,我觉得该服务可能需要一些权限,如果有,请告诉我如何为Windows服务分配权限。

1 个答案:

答案 0 :(得分:1)

Microsoft目前不建议也不支持从任何无人参与的非交互式客户端应用程序或组件(包括ASP,ASP.NET,DCOM和NT服务)自动化Microsoft Office应用程序,因为Office在此环境中运行Office时,可能会出现不稳定的行为和/或死锁。

如果要构建在服务器端上下文中运行的解决方案,则应尝试使用已为安全无人值守执行的组件。或者,您应该尝试找到允许至少部分代码在客户端运行的替代方法。如果从服务器端解决方案使用Office应用程序,则应用程序将缺少许多成功运行的必要功能。此外,您将承担整体解决方案稳定性的风险。请在Considerations for server-side Automation of Office文章中详细了解相关内容。

使用低级API - 扩展MAPI。或者该API周围的任何其他第三方包装器(例如,Redemption)。