我有一个方法可以返回用户的列表,并尝试根据domainid获取完整名称。所以我想把这个列表填充到Dropdown。
以下代码在本地中正常工作,并且在 DevBox 上抛出异常,即“对象引用未设置...”在下面一行。
UserPrincipal.FindByIdentity(new PrincipalContext(ContextType.Domain),stringArray [x])。Name;
任何人都有解决方案吗?
public static List<SelectListItem> GetUsers()
{
try
{
//Get Users list
string usersList = “nraja01,sdaniel01,mmontgo01”;
char[] charArray = new char[] { ',' };
string[] stringArray = usersList.Split(charArray);
List<SelectListItem> users = new List<SelectListItem>();
var user = new SelectListItem();
//loop through each user
for (int x = 0; x <= stringArray.GetUpperBound(0); x++)
{
user = new SelectListItem();
user.Value = stringArray[x];
user.Text = UserPrincipal.FindByIdentity(new PrincipalContext(ContextType.Domain), stringArray[x]).Name;
users.Add(user);
}
return users;
}
catch (Exception ex)
{
_log.Error("Error occured in GetUsers() method: ", ex);
return null;
}
}
答案 0 :(得分:1)
由于.NET 4.0中存在错误,因此在使用 ContextType.Domain 时,必须为PrincipalContext使用不同的构造函数。使用此构造函数:
PrincipalContext(ContextType, string)
例如:
PrincipalContext principalContext = new PrincipalContext(ContextType.Domain, Environment.UserDomainName)
有关错误的详细信息,请参阅以下链接:
答案 1 :(得分:0)
我已成功使用此功能检索用户的全名。
System.DirectoryServices.AccountManagement.UserPrincipal.Current.GivenName