我在使用Web應用程序中的UserPrincipal類的GetAuthorizationGroups方法時遇到問題。UserPrincipal.GetAuthorizationGroups()方法的錯誤
使用下面的代碼,我收到「試圖獲取授權團體,一個錯誤(5)發生」
PrincipalContext context = new PrincipalContext(ContextType.Domain, null, "DC=MyCompany,DC=COM", "username", "password");
UserPrincipal p = UserPrincipal.FindByIdentity(context, IdentityType.SamAccountName, "joe.blogs");
var groups = p.GetAuthorizationGroups();
我相信,此代碼的工作在一定程度上。
- 當我查看上下文對象,我可以看到服務器和用戶名/密碼已在對象正確解析
- 當我查看p對象,我可以看到廣告的詳細信息已填充喜歡這款手機沒有等等。
這是來自錯誤的堆棧跟蹤。
[PrincipalOperationException: While trying to retrieve the authorization groups, an error (5) occurred.]
System.DirectoryServices.AccountManagement.AuthZSet..ctor(Byte[] userSid, NetCred credentials, ContextOptions contextOptions, String flatUserAuthority, StoreCtx userStoreCtx, Object userCtxBase) +317279
System.DirectoryServices.AccountManagement.ADStoreCtx.GetGroupsMemberOfAZ(Principal p) +441
System.DirectoryServices.AccountManagement.UserPrincipal.GetAuthorizationGroupsHelper() +78
System.DirectoryServices.AccountManagement.UserPrincipal.GetAuthorizationGroups() +11
通過從PrincipalContext構造函數中刪除的用戶名和密碼信息,並改變applicationpool(IIS7中),以相同的用戶([email protected])運行 - 下面的代碼工作。
PrincipalContext context = new PrincipalContext(ContextType.Domain, null, "DC=MyCompany,DC=COM");
UserPrincipal p = UserPrincipal.FindByIdentity(context, IdentityType.SamAccountName, "joe.blogs");
var groups = p.GetAuthorizationGroups();
我需要獲得代碼的第一個例子來工作 - 我不想運行的應用程序池的域用戶只是爲了得到這個代碼的工作。
感謝羅布,我已經在PrincipalContext構造函數中嘗試了許多組合,但不幸運。我認爲我的問題的根本原因是知道應用程序用戶調用GetAuthorizationGroups()方法的權限要求。我的應用程序用戶已經讀取了OU中對象的所有信息權限。目前我正通過閱讀用戶的memberOf屬性來完成這一任務。這個提升者只是第一級而不是遞歸的。 – 2010-08-17 12:50:43
FWIW,我有一個工作版本,我使用'var Context = new PrincipalContext(ContextType。域,「logon_domain」);',所以上下文純粹是一個域,並且在Win7 /默認應用程序池中也沒有錯誤。您在域上運行代碼的機器是否已加入? – Rob 2010-08-17 13:23:03
是的,加入到域中。如果我在網絡服務(AppPool)中使用PrincipalContext(ContextType.Domain,「logon_domain」)構造函數,它不起作用。如果我將AppPool更改爲與方法PrincipalContext(ContextType.Domain,null,「DC = MyCompany,DC = COM」,「username」,「password」)中使用的用戶相同的用戶,那麼它確實可行! – 2010-08-17 22:09:55