小编pwi*_*301的帖子

如何使用 System.DirectoryServices.Protocols 连接到 RootDSE 和/或检索最高提交的USN?

使用 System.DirectoryServices,可以通过这种方式获得最高提交的USN:

using(DirectoryEntry entry = new DirectoryEntry("LDAP://servername:636/RootDSE"))
{
     var usn = entry.Properties["highestCommittedUSN"].Value;
}
Run Code Online (Sandbox Code Playgroud)

但是,我需要使用 System.DirectoryServices.Protocols 从远程 ADLDS 获取此信息,它不利用 ADSI。以下是我尝试执行的操作的简化代码示例:

using(LdapConnection connection = GetWin32LdapConnection())
{
     var filter = "(&(highestCommittedUSN=*))";
     var searchRequest = new SearchRequest("RootDSE", filter, SearchScope.Subtree, "highestCommittedUSN");
     var response = connection.SendRequest(searchRequest) as SearchResponse;
     var usn = response.Entries[0].Attributes["highestCommittedUSN"][0];
}
Run Code Online (Sandbox Code Playgroud)

不幸的是,这会引发“DirectoryOperationException:专有名称包含无效语法”。起初我认为 GetWin32LdapConnection() 可能有问题,但该代码在许多其他地方被调用以连接到目录并且永远不会出错。

有任何想法吗?

.net c# directoryservices adlds

1
推荐指数
1
解决办法
2349
查看次数

标签 统计

.net ×1

adlds ×1

c# ×1

directoryservices ×1