0

我有一些进程需要当前 LDAP 提供程序的域名(基本上是从 AD 同步用户信息)。

该过程会提示用户输入源 LDAP 服务器,但会提供有关默认服务器的信息(因此可以只使用默认值)。

以下代码适用于用户工作站,但在服务器上失败:

var uri = "LDAP://" + Environment.GetEnvironmentVariable("LOGONSERVER");

我也试过"ldap://rootDSE"NotSupportedException被抛出:

提供程序不支持搜索,也无法搜索 LDAP://rootDSE。

所以,我有几个问题:

  1. 为什么LOGONSERVERenvvar 在服务器上不可用?
  2. 我能做些什么呢?
  3. 在我看来,RootDSE是迈向真正 LDAP 服务器的垫脚石吗?
4

2 回答 2

0

在进一步调查 RootDSE 之后,我想出了以下代码:

using (DirectoryEntry rootDSE = new DirectoryEntry("LDAP://RootDSE"))
{
    result = (rootDSE.Properties["dnsHostName"].Value ?? "").ToString();
    if (result != "") return result;
}

它似乎可以满足我的需要。

但是,我上面的其余问题仍未得到解答。

于 2015-04-01T13:40:57.933 回答
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。

-吉姆

于 2015-03-31T10:37:34.997 回答