我的SearchResult查询Active Directory时遇到问题。这是我尝试做的:我可以从Active Directory搜索用户,然后以链接形式显示他们的名字。这有效。然后,当您单击链接时,它必须显示有关该用户的所有信息。我使用列表来传递查询结果,当我在Active Directory中搜索名称时,我有一个完整的结果列表,但是当我尝试显示特定用户的信息时,我的列表总是为空,我无法弄清楚这是为什么。
这是我的搜索结果页面,其中包含以下链接:
QTableWidget
当您点击该链接时,它会使用sAMAccountName参数对AD进行研究,这里是控制器:
@{
var incLoop = 0;
var incArr = 0;
var list = (List<string>)ViewData["Names"];
var size = list.Count();
string[] objSID = new string[size];
foreach (var link in list)
{
if (incLoop % 2 == 0)
{
objSID[incArr] = link;
incArr++;
<p>@incArr</p>
}
else
{
<a href="@Url.Action("ShowUserInfo", "Home", new {sAMAccountName=objSID[incArr-1]})">@link</a>
}
incLoop++;
}
}
最后,我的功能是从ADManager类中搜索AD
public ActionResult ShowUserInfo(string name)
{
ADManager adManager = new ADManager();
List<string> info = adManager.UserInformation(name);
if (info != null)
{
ViewData["UserInfo"] = info;
return View();
}
else
return View("SearchUser");
}
createDirectoryEntry()允许创建与AD的连接,ADManager类包含AD的所有访问功能。通常我应该能够为这个查询使用一个简单的SearchResult.FindOne(),因为sAMAccountName是唯一的,但它没有用,所以我尝试了集合(因为这适用于使用AD中的anr参数搜索所有用户)。
编辑:我忘了说我有一个例外:当我点击用户链接时System.DirectoryServices.dll中的System.ArgumentException。所以问题可能来自ADManager搜索查询。 谢谢你的帮助,如果不清楚我可以增加精确度。