OutLook COMException 0x800401E3(MK_E_UNAVAILABLE)

时间:2015-09-23 15:04:15

标签: iis asp-classic outlook

我正在尝试使用ASP.NET应用程序,但我遇到OutLook问题。

代码背后:

public Outlook()
{
    // Check whether there is an Outlook process running.
    if (Process.GetProcessesByName("OUTLOOK").Count() > 0)
    {
        // If so, use the GetActiveObject method to obtain the process and cast it to an Application object.
        OutlookApplication = Marshal.GetActiveObject("Outlook.Application") as Application;
    }
    else
    {

        // If not, create a new instance of Outlook and log on to the default profile.
        OutlookApplication = new Application();
        NameSpace nameSpace = OutlookApplication.GetNamespace("MAPI");
        nameSpace.Logon("", "", missing, missing);
        nameSpace = null;
        }
    }
}

当我播放应用程序时:

  

System.Runtime.InteropServices.COMException(0x800401E3):Opérationon> disponible(Exception de HRESULT:0x800401E3(MK_E_UNAVAILABLE))

我已经读过这个:

  

我猜你是以管理员身份运行Visual Studio(以管理员身份运行启动),而Outlook是以用户身份打开的,用户在Windows登录时登录。因此Visual Studio在与Outlook客户端不同的用户下运行。

但我不知道如何解决它。

1 个答案:

答案 0 :(得分:0)

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

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

如果是Exchange配置文件,您可以考虑使用EWS,有关详细信息,请参阅EWS Managed API, EWS, and web services in Exchange。或者使用Outlook所基于的低级API。以及该API周围的任何第三方包装器 - 例如,Redemption。