我的某些进程需要当前LDAP提供程序的域名(基本上,用于同步AD中的用户信息)。
该过程提示用户输入源LDAP服务器,但提供默认值的信息(因此可以使用默认值)。
以下代码适用于用户工作站,但在服务器上失败:
var uri = "LDAP://" + Environment.GetEnvironmentVariable("LOGONSERVER");
我也尝试了"ldap://rootDSE"
,但抛出了NotSupportedException
:
提供商不支持搜索,无法搜索LDAP:// rootDSE。
所以,我有几个问题:
LOGONSERVER
envvar在服务器上不可用?答案 0 :(得分:0)
不确定你所暗示的是什么" LDAP域名",但域名可以从LDAP中获取来自属性的rootDSE:
defaultNamingContext: DC=YOURDOMAIN,DC=NET
C#是一个广泛的主题,但我看到https://msdn.microsoft.com/en-us/library/aa393248%28v=vs.85%29.aspx显示对rootDSE的访问,并专门显示了defaultNamingContext。
-Jim
答案 1 :(得分:0)
在进一步调查RootDSE之后,我想出了这段代码:
using (DirectoryEntry rootDSE = new DirectoryEntry("LDAP://RootDSE"))
{
result = (rootDSE.Properties["dnsHostName"].Value ?? "").ToString();
if (result != "") return result;
}
似乎做了我需要的事。
但是,我上面提到的其他问题仍然没有答案。