【发布时间】:2010-12-24 05:49:53
【问题描述】:
我在内部 Web 应用程序中使用 System.DirectoryServices.AccountManagement 时遇到问题。该错误不是很具有描述性,但这是发生了什么:
当我尝试验证 AD 中是否存在提供的用户 ID 时,我使用以下代码进行验证:
private bool IsWindowsIDValid(string strWindowsID)
{
var context = new PrincipalContext(ContextType.Domain, "DOMAINSERVER", "DC=DOMAINNAME,DC=net");
var userPrincipal = UserPrincipal.FindByIdentity(context, strWindowsID);
return (userPrincipal != null);
}
但是,在调用 FindByIdentity 的第二行会引发异常。以下是异常详情:
消息: “发生操作错误。”
堆栈跟踪:
在 System.DirectoryServices.AccountManagement.PrincipalContext.DoLDAPDirectoryInit() 在 System.DirectoryServices.AccountManagement.PrincipalContext.DoDomainInit() 在 System.DirectoryServices.AccountManagement.PrincipalContext.Initialize() 在 System.DirectoryServices.AccountManagement.PrincipalContext.get_QueryCtx() 在 System.DirectoryServices.AccountManagement.Principal.FindByIdentityWithTypeHelper(PrincipalContext 上下文,类型 principalType,Nullable`1 identityType,字符串 identityValue,DateTime refDate) 在 System.DirectoryServices.AccountManagement.Principal.FindByIdentityWithType(PrincipalContext 上下文,类型 principalType,字符串 identityValue) 在 System.DirectoryServices.AccountManagement.UserPrincipal.FindByIdentity(PrincipalContext 上下文,字符串 identityValue) 在 *****.IsWindowsIDValid(String strWindowsID) in *****.ascx.cs:line 193
如果我也尝试检查 PrincipalContext 的 ConnectedServer 属性,也会出现同样的错误。但是,我可以尝试根据上下文验证凭据(使用 context.ValidateCredentials()),它会很好地通过。
对可能发生的事情有任何想法吗?我可以在我的机器上的独立控制台脚本中很好地运行此代码 - 当我尝试调试 webapp 时,这发生在我的本地开发环境中,在 VisualStudio 中。这是权限问题还是其他问题?在这一点上我很迷茫。
感谢您的帮助!
-帕特里克
【问题讨论】:
标签: c# asp.net visual-studio active-directory