2015-09-23 57 views
0

我正在嘗試一個ASP.NET應用程序,並且出現OutLook問題。背後OutLook COMException 0x800401E3(MK_E_UNAVAILABLE)

代碼:

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):操作不> disponible(例外德HRESULT:0x800401E3(MK_E_UNAVAILABLE ))

我已經閱讀:

我猜想你以管理員身份運行Visual Studio(通過以管理員身份運行啓動),而以用戶身份打開Outlook時,他以Windows登錄身份登錄。所以Visual Studio在不同於Outlook客戶端的用戶下運行。

但我不知道如何解決它。

+1

再說一遍,這非常不是[標籤:asp-classic],它甚至不好笑。 – Martha

回答

0

由於Office可能會展示,Microsoft目前不推薦並不支持來自任何無人蔘與的非交互式客戶端應用程序或組件(包括ASP,ASP.NET,DCOM和NT服務)的Microsoft 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。

相關問題