gpt4 book ai didi

c# - 如何从 Windows Server 2003 上的事件目录获取 tokenGroups?

转载 作者:太空宇宙 更新时间:2023-11-03 11:46:46 25 4
gpt4 key购买 nike

我正在尝试从 Active Directory 加载 tokenGroups,但一旦部署到 Windows Server (2003),它就无法正常工作。我不明白为什么,因为它在本地运行良好...

这是我的错误:

There is no such object on the server.

这是我的代码(sid 变量是从 HttpContext 中提取的当前用户 SecurityIdentifier):

DirectoryEntry userDE = new DirectoryEntry(string.Format("LDAP://<SID={0}>", sid.Value))
userDE.RefreshCache(new[] { "tokenGroups" });

var tokenGroups = userDE.Properties["tokenGroups"] as CollectionBase;
groups = tokenGroups.Cast<byte[]>()
.Select(sid => new SecurityIdentifier(sid, 0)).ToArray();

知道为什么我会收到该错误吗?

更新:错误实际上发生在 RefreshCache 行

最佳答案

在调用构造函数后,您是否为 userDE 设置了有效值??那个用户真的存在吗?或者你需要提供例如在您的 LDAP 路径中使用的服务器??

错误信息No such object on server似乎表明用户只是简单地不存在....(或由于例如权限而无法找到)

<罢工>试试这个 - 不确定这是否是问题所在,但值得一试 - 它应该有效:

DirectoryEntry userDE = new DirectoryEntry(string.Format("LDAP://<SID={0}>", sid.Value))
userDE.RefreshCache(new string[] { "tokenGroups" });

尝试使用 new string[]而不仅仅是 new[] .

关于c# - 如何从 Windows Server 2003 上的事件目录获取 tokenGroups?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3206447/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com