У меня есть функция, которая возвращает имя пользователя в 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: Сервер не работает.