我在这个 stackoverflow 问题中看到了一些使用 AD 的代码
我对 using 语句感到困惑。我认为它只是用于您担心可能成为内存泄漏的事情,例如 WebClient 或类似的东西......
反正:
using (var context = new PrincipalContext( ContextType.Domain ))
{
using (var user = UserPrincipal.FindByIdentity( context, "username" ))
{
var groups = user.GetAuthorizationGroups();
...
}
}
当我到达该行时var groups = user.GetAuthorizationGroups()
- 用户为空,因此该行因 NullReference 而失败。当我将鼠标悬停在调试上时,它显示空值,然后显示静态成员,并具有所有值。
如果我从 using 语句中取出这一行,并var user = UserPrincipal.FindByIdentity( context, "username" )
根据需要填充用户。
发生什么了 ???
编辑:我塞满并发送了一个虚假的用户名。奇怪的是,虽然当我在调试期间检查变量时,如果我发送虚假的用户 ID,你会期望用户完全为空,但它显示在用户下:空,静态成员,并且有我当前登录的值 -所以我认为这可能与 using 语句有关。干杯!