2013-07-16 41 views
0

我有兩個相同的是遠程連接到另一臺服務器上的C#代碼片段:從一個控制檯和Web應用程序的其他:如何從C#代碼中跟蹤連接失敗的原因?

var mgr = ServerManager.OpenRemote(myServer) 

控制檯一個工作正常。但另一個失敗,但有以下例外:

System.UnAuthorizedAccessException with this com-message: {"Retrieving the COM class factory for remote component with CLSID {2B72133B-3F5B-4602-8952-803546CE3344} from machine failed due to the following error: 80070005 ."}

我已禁用兩臺服務器上的防火牆並重新啓動它們。

有沒有一種方法或工具可以幫助我瞭解每個連接如何進行:如何登錄和訪問兩臺服務器發送和接收的內容?

我的嘗試未被困在IIS日誌和事件查看器中。

我試圖讓小提琴聽,但它也沒有找到任何東西。

+0

是不同的身份?在控制檯的情況下,我認爲身份將會是你,可能是管理員在兩個盒子上。但在網絡代碼的情況下,身份可能較弱。什麼是錯誤信息? – BillH

+0

錯誤是:System.UnAuthorizedAccessException與此com郵件:{「從機器檢索CLSID {2B72133B-3F5B-4602-8952-803546CE3344}的遠程組件的COM類工廠失敗,原因如下錯誤:80070005 。 「} 這個消息的醜陋讓我問這個問題。 – user1019042

回答

0

我建議您使用SysInternals中的Process Monitor來觀察Web進程正在做什麼。技巧就是過濾消防軟管! 順便說一句,我懷疑這是一個應用程序池標識或DCOM權限問題。

+0

我將檢查Process Monitor。謝謝。 – user1019042

5

您得到該異常的原因是因爲應用程序池標識沒有足夠的權限。要使用受管理的API,您需要成爲管理員。

此外,當您使用ServerManager.OpenRemote()時,您的網站運行的帳戶(即應用程序池標識或其他帳戶)需要是具有足夠特權的有效的域帳戶。

順便提一句,CLSID「2B72133B-3F5B-4602-8952-803546CE3344」是支持ServerManager託管API的Microsoft.ApplicationHost.WritableAdminManager COM組件的類ID。