从asp.net Web应用程序中的活动目录获取用户的全名

时间:2010-11-28 14:28:44

标签: asp.net dns active-directory ldap

我正在尝试从活动目录中获取给定用户的全名。 这段代码可以在我的电脑上运行,但是当我把它放在服务器上时会抛出异常:

找不到网络路径。

代码是:

DirectoryEntry obDirEntry = null;
        try
        {
            obDirEntry = new DirectoryEntry("WinNT://" + "domain" + "/" + Environment.UserName);
            System.DirectoryServices.PropertyCollection coll = obDirEntry.Properties;
            object obVal = coll["FullName"].Value;
            Response.Write(obVal);
        }
        catch (Exception ex)

        {
           Response.Write(ex.Message);
        }

任何想法如何解决所以它也可以在服务器上工作?或者也许以其他方式我可以获得给定用户名的全名?我是否需要以某种方式使用LDAP?

2 个答案:

答案 0 :(得分:2)

这里可能有很多问题是我发现的

  1. 你的新Directory对象指向WINNT我想你需要使用LDAP地址,即

    new DirectoryEntry("LDAP://" + sADServer + "/" + sNewOUPath, sADUser, sADPassword, AuthenticationTypes.Secure);

  2. 在您的网络服务器中,您需要更改应用程序池中的用户,并且该用户应拥有AD的适当权利

  3. 您还可以编辑web.config以执行<identity impersonate="true" />并确保在Web服务器上运行该页面的人具有AD的适当权限

  4. 有关AD的完整实现参考,请参阅此http://anyrest.wordpress.com/2010/02/01/active-directory-objects-and-c/

答案 1 :(得分:0)

我也遇到了这个问题,我找到了另一个解决方案。 在我的情况下,我刚刚在域名后添加了“.local”后缀。即我做过这样的事情:

DirEntry = new DirectoryEntry("WinNT://" + "domain.local" + "/" + Environment.UserName);

BR,Vladimir