【发布时间】:2019-08-16 00:04:34
【问题描述】:
我正在查找对需要使用以下代码添加用户的安全组的引用:
string strActiveDirectoryPath = @"GC://domain.com";
DirectoryEntry directoryEntryRoot = new DirectoryEntry(strActiveDirectoryPath);
using (DirectorySearcher searcher = new DirectorySearcher(directoryEntryRoot))
{
searcher.PageSize = 1000;
searcher.Filter = "(&(objectClass=group)(cn=*SGNAME*))";
//searcher.SearchScope = SearchScope.Subtree;
SearchResult securityGroup = searcher.FindOne();
}
上面的代码有时会抛出异常说
搜索结果记录过多
我获取安全组的逻辑是否正确?
然后我得到用户的引用并尝试将其添加到安全组:
searcher.Filter = "(SAMAccountName=" + UserAlias + ")";
searcher.PropertiesToLoad.Add("givenname");
searcher.PropertiesToLoad.Add("displayName");
SearchResult userALias = searcher.FindOne();
DirectoryEntry ent = new DirectoryEntry(securityGroup.Path);
string domainString = "GC://domain.com/";
int Start = domainString.Length;
string member = userALias.Path.Substring(domainString.Length);
ent.Properties["member"].Add(member);
// ent.Invoke("Add", new object[] { s });
ent.CommitChanges();
ent.Close();
我创建了一个DirectoryEntry 的实例并提供了我找到的安全组的路径。
应该向DirectoryEntry提供什么?
CommitChanges 失败并出现异常:
服务器不愿意处理请求。
【问题讨论】:
-
您是否使用.NET Core?
-
@GabrielLuci 我想使用.net core,但我不知道.net core 是否支持目录搜索库
-
可以,但前提是您安装了仅适用于 Windows 的
Microsoft.Windows.CompatibilityNuGet 包。 (您将无法再在任何其他操作系统上运行您的应用) -
我之所以问,是因为您同时标记了
.net和.net-core,但.net标记仅用于非核心问题。 -
好的。现在我面临不允许通过 GC 端口进行的错误操作
标签: c# .net .net-core active-directory ldap