1
我們有一個場景,一些.NET代碼試圖訪問COM(實際上是DCOM)對象的當前實例。當調用Marshal.GetActiveObject(class id here)時會導致錯誤800401E3(Operation Unavailable)?
被訪問的對象是在VB6中開發的。它的當前實例在遠程系統上可用,並且似乎可以從VB6代碼正確訪問。
試圖調用Marshal.GetActiveObject
,指定類名稱會導致引發COMException,並引用錯誤800401E3(Operation Unavailable)。
在託管該DCOM組件的計算機上運行時,相同的.NET代碼似乎正常運行。
任何人都可以提出爲什麼此COMException正在生成?
由於.NET客戶端應用程序是WinForms應用程序,因此它具有STAThread屬性。但是,對GetActiveObject的調用是在DLL中,而不是。我在GetActiveObject調用之前添加了驗證,以確保調用DLL方法的線程正在使用STA。到目前爲止,看起來沒有從不支持線程模式的應用程序調用該方法。 – 2009-07-20 20:31:15