编程语言
首页 > 编程语言> > c#-COMException(0x800401E3):操作不可用(来自HRESULT的异常:0x800401E3(MK_E_UNAVAILABLE))与计划任务

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