【问题标题】:COMException (0x800401E3): Operation unavailable (Exception from HRESULT: 0x800401E3 (MK_E_UNAVAILABLE)) with scheduled taskCOMException (0x800401E3):操作不可用(来自 HRESULT 的异常:0x800401E3 (MK_E_UNAVAILABLE))与计划任务
【发布时间】:2016-02-06 06:15:28
【问题描述】:

在网上搜索没有成功后,这是我的问题。

我有一个任务,我想安排从 Outlook 检索电子邮件附件并提取数据。 当我手动启动任务时它工作正常,但每当我尝试通过计划任务启动它时它会失败并出现错误:

COMException (0x800401E3):操作不可用(来自 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 文件、程序中的参数),但都失败了。 它是使用用于手动启动任务的同一帐户启动的。

有人可以帮助我吗?任何帮助,将不胜感激! 干杯!

【问题讨论】:

标签: c# outlook com-interop


【解决方案1】:

Microsoft 目前不推荐也不支持从任何无人值守、非交互式客户端应用程序或组件(包括 ASP、ASP.NET、DCOM 和 NT 服务)自动化 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 了解更多信息。

【讨论】:

  • 谢谢,我会尝试其中一个!
【解决方案2】:

只是一些想法:

  1. 可能是 GUI 问题。根据this answer,GUI 任务不能从计划任务中运行。可能有一种解决方法,但我不知道有一个。

  2. 可能是上下文或权限问题。您在任务中配置了哪些设置,它们是否与您在任务计划程序之外运行任务时相同?

【讨论】:

  • 由于 GUI 问题,不清楚。 @Eugene 的答案就是原因。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-05-26
  • 2014-10-19
  • 1970-01-01
  • 2011-08-13
  • 2013-05-30
相关资源
最近更新 更多