2019年2月12日 星期二

[C# ASP.NET]Win10環境下,由C#.NET程式呼叫元件COM+所遇到的問題(元件擷取 COM Class Factory 失敗: 80070005)

工作的關係,需要將原本舊有的網頁由 ASP翻新成 ASP.NET
但是很快就遇到問題了, 之前由 ASP版 Server.CreateObject的方式呼叫元件COM+都沒有什麼問題,
但改為 ASP.NET 由參考方式呼叫 COM+就沒辦法啟動了


會跳出以下這個錯誤:
由於發生下列錯誤,為具有 CLSID {XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX} 的元件擷取 COM Class Factory 失敗: 80070005。
描述: 在執行目前 Web 要求的過程中發生未處理的例外情形。請檢閱堆疊追蹤以取得錯誤的詳細資訊,以及在程式碼中產生的位置。

沒有授權 ASP.NET 存取要求的資源。請考慮將資源存取權授與 ASP.NET 要求識別。ASP.NET 有一個基本處理序識別(通常在 IIS 5 上為 {MACHINE}\ASPNET,在 IIS 6 上為 Network Service),會在應用程式未模擬的情況下使用。如果應用程式是透過 <identity impersonate="true"/> 模擬,這個識別將會是匿名使用者 (通常為 IUSR_MACHINENAME) 或經過驗證的要求使用者。

結果:
看起來是因為 ASP.NET在IIS所用的識別權限不夠,而沒辦法去呼叫COM+
之後終於找到方法可以調整這部分的權限
方法:
打開IIS
--> 點取應用程式集區(這邊會有目前有的應用程式集區清單)
--> 找到目前網頁應用程式所在用的集區(ex:我程式這邊是用到.NET Framework 2.0, 所以我對用到 .NET CLR 2.0 的集區去做修改)
--> 選取後到進階設定 將 '識別'修改提高層級(由原本 ApplicationPoolIdentity 改為 LocalSystem)

如此一來就可以順利呼叫COM+




沒有留言:

張貼留言