LDAP连接到域无法正常工作

时间:2015-10-05 19:47:46

标签: c# windows ldap

我正在与我与域的LDAP连接作斗争。 我在VM连接上安装了Windows Server 2012 R2 Datacenter,并与本地网络进行桥接和复制。

我想创建一个工具,让我可以看到用户名,名字,姓名等...到目前为止,我已经建立了所有内容。但是,当我尝试搜索用户时,它说:

  

类型的第一次机会异常   发生'System.Runtime.InteropServices.COMException'   System.DirectoryServices.dll程序

     

其他信息:服务器无法正常运行。

     

如果存在此异常的处理程序,则程序可能是安全的   继续进行。

继承我的代码:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.DirectoryServices;
using System.DirectoryServices.ActiveDirectory;
using System.Net;
using System.Security.Permissions;

namespace Manu_Tool.DomainServices{

    class GetterServices{

        DirectoryEntry DE = new DirectoryEntry("LDAP://testdomain.com/DC=testdomain, DC=com", "admin", "P@ssw0rd", AuthenticationTypes.Secure);

        public String getUsername (string username){

            DirectorySearcher ds = new DirectorySearcher(DE, "objectClass=User", null, SearchScope.Subtree);
            ds.Filter = "(&((&(objectCategory=Person)(objectClass=User)))(samaccountname=" + username + "))";

            SearchResult sr = ds.FindOne();

            return sr.ToString();

            }
    }
}

停在SearchResult sr = ds.FindOne();

我可以ping服务器并禁用防火墙。

域名:testdomain.com
登录:管理员 通过:P @ ssw0rd
主机名:testserver

可能出了什么问题?

这只是获取用户名的代码。

2 个答案:

答案 0 :(得分:0)

正如我在上面的评论中提到的,您的代码似乎对我来说运行良好。虽然这是我目前从我的一个应用程序中的Active Directory中提取用户信息的方式。试一试,看看它是否有助于你的情况。

添加routes.MapRoute( "customRouteName", "aspnet/introduction-To-AspNet", new { controller = "AspNet", action = "Introduction" }); 参考。

System.DirectoryServices.AccountManagement

通常这些语句将包含在Principal savedUser; ; PrincipalContext pc = new PrincipalContext(ContextType.Domain, "domain.com", "domainUser", "password"); UserPrincipal user = new UserPrincipal(pc); user.SamAccountName = "username"; PrincipalSearcher searcher = new PrincipalSearcher(user); savedUser = searcher.FindOne(); 语句中,但您不能返回已处置的对象。

答案 1 :(得分:0)

我现在可以解决它。这是对我有用的代码:

namespace ADM
{
    class GetterSevice
    {
        static string path = "LDAP://DC=testdomain, DC=com";
        static DirectoryEntry DE = new DirectoryEntry(path, null, null, AuthenticationTypes.Secure);
        DirectorySearcher ds = new DirectorySearcher(DE, "objectClass=User", null, SearchScope.Subtree);

        public string getUsername(string username)
        {

            string finalResult = "";


            ds.Filter = "(&((&(objectClass=User)(objectCategory=person)))(SAMAccountName=" + username + "))";

            SearchResultCollection src = ds.FindAll();

            foreach (SearchResult sr in src)
            {
                DirectoryEntry result = new DirectoryEntry();
                result = new DirectoryEntry(sr.Path);
                finalResult = (result.InvokeGet("SAMAccountName")).ToString();
            }


            return finalResult;
        }

谢谢你的帮助