【发布时间】:2010-12-23 11:49:01
【问题描述】:
我正在尝试使用以下代码获取用户的所有 Active Directory 组:
private static IEnumerable<string> GetGroupNames(string userName)
{
using (var context = new PrincipalContext(ContextType.Domain))
{
using (var userPrincipal = UserPrincipal.FindByIdentity(context, userName))
{
var groupSearch = userPrincipal.GetGroups(context);
var result = new List<string>();
foreach (var principal in groupSearch)
{
Log.LogDebug("User {0} is member of group {0}", userPrincipal.DisplayName, principal.DisplayName);
result.Add(principal.SamAccountName);
}
return result;
}
}
}
此代码正确找到用户主体,但在调用 GetGroups 时失败,并出现 PrincipalOperationException: Unknown error (0x80005000)。
根异常:
at System.DirectoryServices.AccountManagement.ADStoreCtx.GetGroupsMemberOf(Principal foreignPrincipal, StoreCtx foreignContext)
at System.DirectoryServices.AccountManagement.Principal.GetGroupsHelper(PrincipalContext contextToQuery)
at System.DirectoryServices.AccountManagement.Principal.GetGroups(PrincipalContext contextToQuery)
at [line of the GetGroup call]
内部异常(COMException):
at System.DirectoryServices.DirectoryEntry.Bind(Boolean throwIfFail)
at System.DirectoryServices.DirectoryEntry.Bind()
at System.DirectoryServices.DirectoryEntry.get_AdsObject()
at System.DirectoryServices.PropertyValueCollection.PopulateList()
at System.DirectoryServices.PropertyValueCollection..ctor(DirectoryEntry entry, String propertyName)
at System.DirectoryServices.PropertyCollection.get_Item(String propertyName)
at System.DirectoryServices.AccountManagement.ADUtils.RetriveWkDn(DirectoryEntry deBase, String defaultNamingContext, String serverN
Another report with this problem.
有什么线索吗?
【问题讨论】:
-
所有用户都会出现这种情况吗?或者它只发生在特定用户身上?我知道 .NET 库中有一个错误,当用户 DN 包含“/”时它会抛出这个 COMException。如果您确认此问题仅发生在 DN 仅包含“/”的用户上,我也对此问题进行了修复
-
我有你描述的问题。当用户 DN 包含“/”时,我在获取组时遇到问题。你能告诉我你使用的修复方法是什么吗?
-
我对在 DN 中包含“/”的用户有同样的问题。解决方法是什么?
-
我没有得到 Harvey Kwok 的答复。仍然有这个问题。
标签: .net active-directory directoryservices