Я использую консольное приложение для написания тестового кода:
/// <summary>
/// Returns AD information for a specified userID.
/// </summary>
/// <param name="ntID"></param>
/// <returns></returns>
public ADUser GetUser(string ntID)
{
DirectorySearcher search = new DirectorySearcher();
search.Filter = String.Format("(cn={0})", ntID);
search.PropertiesToLoad.Add("mail");
search.PropertiesToLoad.Add("givenName");
search.PropertiesToLoad.Add("sn");
search.PropertiesToLoad.Add("displayName");
search.PropertiesToLoad.Add("userPrincipalName");
search.PropertiesToLoad.Add("cn");
SearchResult result = search.FindOne();
return new ADUser(result);
}
И это отлично работало из консольного приложения. Однако, когда я переместил его в приложение ASP.NET, я получил сообщение об ошибке о том, что не знаю правильный домен.
Есть ли трюк, который мне не хватает для доступа к AD при работе с учетной записью ASPNET?
EDIT: передачи только строки подключения LDAP://domain недостаточно, так как требуется фактический логин/пароль. Поскольку это выполняется под локальной учетной записью на машине, я не уверен, какой AD L/P использовать. Могу ли я каким-то образом делегировать доступ к учетной записи пользователя этому?
EDIT #2: при попытке использовать олицетворение личности я получаю исключение DirectoryServicesCOMException с: