c#-COMException(0x800401E3):操作不可用(来自HRESULT的异常:0x800401E3(MK_E_UNAVAILABLE))与计划任务
作者:互联网
在网上搜索失败后,这是我的问题.
我要安排一个任务,以从Outlook中检索电子邮件的附件并提取数据.
当我手动启动任务时,它工作正常,但是每当我尝试通过计划任务启动它时,都会失败并显示以下错误:
COMException (0x800401E3): Operation unavailable (Exception from HRESULT: 0x800401E3 (MK_E_UNAVAILABLE))
程序尝试按以下方式检索或创建Outlook实例时会发生这种情况:
private Application GetApplicationObject()
{
Application application = null;
if (Process.GetProcessesByName("OUTLOOK").Any())
{
application = Marshal.GetActiveObject("Outlook.Application") as Application;
}
else
{
application = new Application();
}
return application;
}
我尝试了几种方法(批处理文件,.exe文件,程序中的参数),但它们均失败了.
它是使用与手动启动任务相同的帐户启动的.
有人能帮我吗 ?任何帮助,将不胜感激!
干杯!
解决方法:
Microsoft当前不建议也不支持任何无人参与的非交互客户端应用程序或组件(包括ASP,ASP.NET,DCOM和NT Services)中的Microsoft Office应用程序自动化,因为Office可能表现出不稳定的行为和/在此环境中运行Office时出现死锁或死锁.
如果要构建在服务器端上下文中运行的解决方案,则应尝试使用对无人值守执行安全的组件.或者,您应该尝试找到允许至少部分代码在客户端运行的替代方法.如果您从服务器端解决方案中使用Office应用程序,则该应用程序将缺少许多成功运行所需的功能.此外,您将承担整体解决方案稳定性的风险.在Considerations for server-side Automation of Office文章中了解有关此内容的更多信息.
您可能会考虑使用低级API(或任何其他第三方包装程序)-Outlook所基于的扩展MAPI.如果是Exchange配置文件,则为EWS,有关更多信息,请参见EWS Managed API, EWS, and web services in Exchange.
标签:outlook,com-interop,c 来源: https://codeday.me/bug/20191119/2036502.html