我正在尝试从活动目录中获取给定用户的全名。 这段代码可以在我的电脑上运行,但是当我把它放在服务器上时会抛出异常:
找不到网络路径。
代码是:
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?
答案 0 :(得分:2)
这里可能有很多问题是我发现的
你的新Directory对象指向WINNT我想你需要使用LDAP地址,即
new DirectoryEntry("LDAP://" + sADServer + "/" + sNewOUPath, sADUser, sADPassword, AuthenticationTypes.Secure);
在您的网络服务器中,您需要更改应用程序池中的用户,并且该用户应拥有AD的适当权利
您还可以编辑web.config以执行<identity impersonate="true" />
并确保在Web服务器上运行该页面的人具有AD的适当权限
有关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