首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >InteropServices.COMException

InteropServices.COMException
EN

Stack Overflow用户
提问于 2016-10-13 20:50:13
回答 1查看 936关注 0票数 0

我对MVC方案有个问题。

堆栈如下:

System.Runtime.InteropServices.COMException (0x80005000):System.DirectoryServices.DirectoryEntry.Bind(Boolean throwIfFail的未知错误(0x80005000),System.DirectoryServices.DirectoryEntry.Bind()的System.DirectoryServices.DirectoryEntry.get_Name() ( PosmanWeb2.Controllers.Helpers.SessionHelpers.GetGroup(SearchResult的结果),PosmanWeb2.Controllers.Helpers.SessionHelpers.GetPerfilAD(SearchResult的结果( PosmanWeb2.Controllers.Helpers.SessionHelpers.GetUser() at PosmanWeb2.Controllers.Helpers.SessionHelpers.ConnectActiveDirectory() )

SessionHelpers上的方法是proyect的一部分,最后一个似乎有问题,代码如下:

代码语言:javascript
复制
private static List<string> GetGroup(SearchResult result)
{
    List<string> nombresPerfilAD = new List<string>();

    foreach (var i in result.Properties["memberOf"])
    {
        var group = new DirectoryEntry(@"LDAP://" + i);      
        nombresPerfilAD.Add(group.Name.Split('=')[1].ToUpper().Trim());             
    }

    return nombresPerfilAD;
}  

它主要做的是保存一个列表中的所有配置文件。

特别是一个用户没有这个问题,而另两个用户则有这个问题。

我在其他线程上看到,它可能与权限问题有关,但我不能100%确定该在哪里查找。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-10-13 22:38:19

当前范围内的一个很好的解决方案是不绑定到。result.Properties"memberOf“已经包含组DN。您可以在不使用IADsPathName接口连接到AD的情况下从它获得名称(需要添加对ActiveDs对象的引用)。此外,您还可以使用此接口解除特殊字符。例如,如果您的组名是#Test,它将作为转义返回,就像#Test一样。因此,如果以以下方式重写方法,您将解决问题,提高性能,并处理字符转义:

代码语言:javascript
复制
    private static List<string> GetGroup(SearchResult result)
    {
        List<string> nombresPerfilAD = new List<string>();
        IADsPathname pathname = new PathnameClass();
        pathname.SetDisplayType(2);
        pathname.EscapedMode = 4;

        foreach (string groupDn in result.Properties["memberOf"])
        {
            pathname.Set(groupDn, 4);
            nombresPerfilAD.Add(pathname.GetElement(0).ToUpper());
        }

        return nombresPerfilAD;
    }

似乎绑定而不是用逗号分隔是为了避免出现这样的情况:当一个组在其名称中包含逗号时。但是,如果组名包含"=“字符怎么办?旧代码不起作用

如果使用.NET 4,则需要将ActiveDs属性中的类型设置为false (在项目引用中)

请注意,memberOf属性不包含嵌套组(userA -> groupA、groupA -> groupB => userA -> groupB)和用户的主组。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/40030729

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档