Изменение моего домена - PullRequest
       7

Изменение моего домена

0 голосов
/ 13 февраля 2012

У меня есть функция, которая возвращает имя пользователя в Active Directory для приложения интрасети:

public string GetCurrentUsersName()
    {
        //Get the username and domain information
        string user = Environment.UserName;
        string domainName = Environment.UserDomainName;

        //Set the correct format for the AD query and filter
        string ldapQueryFormat = @"LDAP://" + domainName + ".com/DC=" + domainName + ",DC=com";
        string queryFilterFormat = @"(&(samAccountName=" + user + ")(objectCategory=person)(objectClass=user))";

        SearchResult result = null;
        using (DirectoryEntry root = new DirectoryEntry(ldapQueryFormat))
        {
            using (DirectorySearcher searcher = new DirectorySearcher(root))
            {
                searcher.Filter = queryFilterFormat;
                SearchResultCollection results = searcher.FindAll();

                result = (results.Count != 0) ? results[0] : null;
            }
        }

        //Get the email property from AD
        string name = result.Properties["displayName"][0] as string;
        return name;
    }

Недавно я изменил домен с mycompany.com на mycompany.local.Теперь я получаю сообщение об ошибке всякий раз, когда я пытаюсь запустить этот метод, я должен что-то изменить?Строка domainName раньше равнялась mycompany, но теперь она равна myco, поскольку это доменное имя, которое я использую.

Я получаю ошибку:

System.Runtime.InteropServices.COMException: Сервер не работает.

Ответы [ 2 ]

1 голос
/ 13 февраля 2012

Если вы недавно изменили домен с mycompany.com на mycompany.local, правильный формат запроса и фильтра AD должен выглядеть следующим образом:

//Set the correct format for the AD query and filter
string ldapQueryFormat = @"LDAP://" + domainName + ".local/DC=" + domainName + ",DC=local"; 

Замена 'Com' на 'local'

0 голосов
/ 13 февраля 2012

Есть ли причина для динамического построения строки домена? Будет ли это отличаться для разных пользователей или ситуаций? Если нет, то почему бы не определить его как параметр конфигурации? Вы можете получить адрес LDAP для вашего домена из Active Directory, а затем вам просто нужно установить статическую настройку в файле web.config вашего сайта. Доменное имя должно изменяться настолько редко, что его проще установить, чем пытаться его динамически построить.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...