在开发服务器上使用c# .net的用户获取活动目录域名时出错(在本地工作正常)
本文关键字:出错 域名 工作 活动 服务器 开发 获取 用户 net | 更新日期: 2023-09-27 18:15:04
我有一个方法,它返回用户列表并尝试基于domainid获取全名。所以我想填充这个列表到下拉列表
下面的代码在本地中工作良好,并且在DevBox上抛出异常,"object reference not set…"在下一行。
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;
}
}
由于。net 4.0中的一个bug,当你使用ContextType.Domain时,你必须为PrincipalContext使用不同的构造函数。使用这个构造函数:
PrincipalContext(ContextType, string)
例如:PrincipalContext principalContext = new PrincipalContext(ContextType.Domain, Environment.UserDomainName)
有关该bug的详细信息,请参见以下链接:
http://social.msdn.microsoft.com/forums/en/csharplanguage/thread/4c9fea6c - 1 - d0a - 4733 - a8ac e3b78d10e999
http://connect.microsoft.com/VisualStudio/feedback/details/610995/unknown-principaloperationexception-when-add-userprincipal-in-collection-groupprincipal-members我已经设法通过使用这个来检索用户的全名。
System.DirectoryServices.AccountManagement.UserPrincipal.Current.GivenName