2012-05-06 89 views
1

正如標題所說,我想從一個ASP.NET MVC應用程序這樣的實例化一個COM對象:無法從ASP.NET MVC應用程序實例化COM對象

dynamic obj = Activator.CreateInstance(Type.GetTypeFromProgID(progID)); 

,但它引發以下收到COMException :

Retrieving the COM class factory for component with CLSID {16542E4F-4594-4B97-922D-BE9C478F93BB} failed due to the following error: 800aea5f Exception from HRESULT: 0x800AEA5F.

相同的代碼從WinForms應用程序可與下面的生成配置:Platform: x86Platform target: x86

我將構建配置設置爲與Winforms應用程序相同的mvc應用程序和使用COM對象的程序集。

我正在使用Windows 7,IIS 7.5,ASP.NET v4.0應用程序池並啓用32位應用程序True並且該網站在擁有管理員權限的用戶下運行。

你有什麼建議可以幫助解決這個問題?

+0

即使你已經啓用了32位模式,這並不意味着你的.NET代碼在32位上運行。所以我想這是你從64位.NET代碼調用32位COM? – YvesR

+0

@YvesR正如我在問題中所說的,我爲mvc應用程序和使用COM對象的程序集設置了構建配置:「Platform:x86」和「Platform target:x86」,因此它應該運行32-位代碼。 –

+0

您是否正確設置了DCOM權限,以便您可以從網站啓動com +對象?我的意思是您在網站上運行的帳戶的默認啓動設置(dcomcnfg.exe)。當我在win2k8機器上設置IIS時,我總是需要調整設置。 – YvesR

回答

0

設置應用程序池的默認用戶到用戶具有管理員權限

0

@ david.s我不知道如何添加屏幕截圖作爲評論,所以我將其設置爲答案。 因爲你已經有了所有的32位的東西,並且DLL不能被調用,它可能是一個權限問題。

呼叫DCOMCNFG.EXE並檢查設置(對不起,只有德國的服務器,但應工作): enter image description here

你必須設置更改後重置IIS。

相關問題