我有一个在我们的 Intranet 上运行的 ASP.NET 应用程序。在生产中,我可以从域上下文中获取用户并访问大量信息,包括他们的名字和姓氏(UserPrincipal.GivenName 和 UserPrincipal.Surname)。
我们的测试环境不属于生产域,测试用户在测试环境中没有域帐户。因此,我们将它们添加为本地计算机用户。当他们浏览到起始页时,系统会提示他们输入凭据。我使用以下方法获取 UserPrincipal
public static UserPrincipal GetCurrentUser()
{
UserPrincipal up = null;
using (PrincipalContext context = new PrincipalContext(ContextType.Domain))
{
up = UserPrincipal.FindByIdentity(context, User.Identity.Name);
}
if (up == null)
{
using (PrincipalContext context = new PrincipalContext(ContextType.Machine))
{
up = UserPrincipal.FindByIdentity(context, User.Identity.Name);
}
}
return up;
}
我在这里遇到的问题是,当 ContextType == Machine 时检索 UserPrinicipal 时,我没有获得 GivenName 或 Surname 之类的属性。在创建用户(Windows Server 2008)时有没有办法设置这些值,还是我需要以不同的方式来解决这个问题?