WPF Active Directory调用性能问题

时间:2014-12-11 23:07:53

标签: c# wpf performance optimization active-directory

我有一个C#WPF应用程序,我正在尝试使用Active Directory服务器执行轻量检查,并且遇到了20-30秒的严重性能问题,以便运行该功能。使用相同的代码,我可以将它放在Winforms应用程序中,大约需要1秒或更短的时间。由于它是一个很大的AD,我猜它是为最终用户提取所有属性,但我真的只想要该人的名字和姓氏(用于其他目的),并确保用户在Active Directory中。 / p>

以下是代码:

public string DomainUserNameGet(string ActiveDirectoryServer, string WindowsUserID) {
    /// queries AD to get logged on user's name
    string results = "";
    try {
    // create your domain context
    PrincipalContext oPrincipalContext = new PrincipalContext(
        ContextType.Domain
        , ActiveDirectoryServer
    );
    UserPrincipal oUserPrincipal = UserPrincipal.FindByIdentity(
          oPrincipalContext
        , IdentityType.SamAccountName
        , ActiveDirectoryServer + @"\" + WindowsUserID                    
    );
    results =
        oUserPrincipal.GivenName.ToString()
        + " "
        + oUserPrincipal.Surname.ToString();
    } catch { }
    return results;
}

疯狂的是我可以通过命令行执行以下操作并在大约1秒钟内获得响应:

NET USER /DOMAIN LANID | find "LANID" /c

关于如何提高绩效的任何想法?

1 个答案:

答案 0 :(得分:0)

RenniePet说得对;结果证明存在DNS问题;我不确定为什么这会出现在WPF和胜利形式中。