2009-06-30 20 views
1

我們有一個場景,一些.NET代碼試圖訪問COM(實際上是DCOM)對象的當前實例。當調用Marshal.GetActiveObject(class id here)時會導致錯誤800401E3(Operation Unavailable)?

被訪問的對象是在VB6中開發的。它的當前實例在遠程系統上可用,並且似乎可以從VB6代碼正確訪問。

試圖調用Marshal.GetActiveObject,指定類名稱會導致引發COMException,並引用錯誤800401E3(Operation Unavailable)。

在託管該DCOM組件的計算機上運行時,相同的.NET代碼似乎正常運行。

任何人都可以提出爲什麼此COMException正在生成?

回答

1

您是否嘗試在點網絡客戶端應用程序中使用[STAThread]屬性?

+0

由於.NET客戶端應用程序是WinForms應用程序,因此它具有STAThread屬性。但是,對GetActiveObject的調用是在DLL中,而不是。我在GetActiveObject調用之前添加了驗證,以確保調用DLL方法的線程正在使用STA。到目前爲止,看起來沒有從不支持線程模式的應用程序調用該方法。 – 2009-07-20 20:31:15

相關問題