2012-03-13 59 views
2

將此代碼部署到身份爲應用程序池用戶的Web應用程序時,以下代碼會引發未知的COM異常。當調用FindByIdentity方法時發生異常。GroupPrincipal.FindByIdentity未知COM異常

System.Runtime.InteropServices.COMException:未知錯誤 (0x8000500c)

using (PrincipalContext prinCon = new PrincipalContext(ContextType.Domain)) 
{ 
    GroupPrincipal groupPrin = GroupPrincipal.FindByIdentity(prinCon, name); 
} 

如果我更改應用程序池標識這一問題得到解決的域用戶。最初導致我認爲這是一個權限/安全問題。但是,這個錯誤不會發生在所有服務器上,只是一些。此外,重新啓動將解決此問題。

所以,我的問題是爲什麼會重新啓動服務器解決這個問題?有沒有辦法讓我的工作無需重新啓動?

我已經做了大量的谷歌搜索,並沒有遇到任何人有同樣的問題,一些權限類似的問題,但沒有任何幫助解決我的問題。

在此先感謝。

+0

什麼是你的'name'值?你在那裏指定了什麼? – 2012-03-13 16:12:38

+0

它是要搜索的組的名稱,字符串,例如「管理員」 – user1084440 2012-03-13 17:11:23

+0

在更改爲使用域用戶之前,您正在使用的應用程序池用戶帳戶是什麼?它是一個本地用戶帳戶嗎? 你能否在這裏粘貼應用程序池用戶帳戶名? 「GroupPrincipal.FindbyIdentity」顯然需要將您的應用程序池用戶帳戶驗證到Active Directory以執行LDAP查詢。 – 2012-03-24 19:47:28

回答

0

你沒有指定身份類型,但是你給它一個字符串。也許它不知道如何搜索字符串。例如,也許它假設字符串是一個GUID,然後試圖解析它,然後失敗。

試着這麼做:

var groupPrin = GroupPrincipal.FindByIdentity(prinCon, IdentityType.Name , name); 

另外,儘量用一些憑據絕對有權執行這些操作,比如管理員或服務帳戶設置你的PrincipalContext。

1

更改應用程序池帳戶是爲我工作。它是ApplicationPoolIdentity用戶,但在我更改爲Network Service後,此錯誤消失,AD代碼正常工作。我希望這有幫助。

+0

謝謝!這也適用於我,但我已經部署這個Web應用程序超過一年,現在沒有問題。突然間,我得到了這個錯誤,沒有對這段代碼做任何改變。我想知道是否有更新可以對此負責? – Crob 2016-02-10 18:05:05