我正在尝试使用VS2013和c#构建一个简单的Outlook插件 对于Outlook 2010工作正常,但在2013年的Outlook 2013中出现此错误:
Outlook.application o = new Outlook.Application();
检索具有CLSID {0006F03A-0000-0000-C000-000000000046}的组件的COM类工厂因以下错误而失败:80080005服务器执行失败(HRESULT异常:0x80080005(CO_E_SERVER_EXEC_FAILURE))
VS和Outlook在同一用户下运行,操作系统是Windows 7,完整性级别相同。
谢谢, 马吕斯
答案 0 :(得分:1)
以下陈述:
我正在尝试构建一个简单的outlook插件
和
Outlook.application o = new Outlook.Application();
不兼容!
您需要使用加载项中提供的{{1}}属性。如果您开发基于VSTO的加载项,请检查加载项类的Application属性。
无论如何,以下错误说明指出您尝试从Windows服务自动化Outlook:
检索具有CLSID {0006F03A-0000-0000-C000-000000000046}的组件的COM类工厂因以下错误而失败:80080005服务器执行失败(HRESULT异常:0x80080005(CO_E_SERVER_EXEC_FAILURE))
Microsoft目前不建议也不支持从任何无人参与的非交互式客户端应用程序或组件(包括ASP,ASP.NET,DCOM和NT服务)自动化Microsoft Office应用程序,因为Office可能会出现不稳定Office在此环境中运行时的行为和/或死锁。
如果要构建在服务器端上下文中运行的解决方案,则应尝试使用已为安全无人值守执行的组件。或者,您应该尝试找到允许至少部分代码在客户端运行的替代方法。如果从服务器端解决方案使用Office应用程序,则应用程序将缺少许多成功运行的必要功能。此外,您将承担整体解决方案稳定性的风险。请在Considerations for server-side Automation of Office文章中详细了解相关内容。
您可以考虑使用服务中的低级代码 - 扩展MAPI或围绕该API的任何第三方包装。