C#MVC Active Directory没有搜索结果

时间:2017-05-19 09:30:50

标签: c# asp.net-mvc razor active-directory

我的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搜索查询。 谢谢你的帮助,如果不清楚我可以增加精确度。

0 个答案:

没有答案