System.DirectoryServices.DirectoryServicesCOMException (0x8007203B): произошла локальная ошибка - PullRequest
0 голосов
/ 09 июня 2011

Когда мы пытаемся найти пользователя в ActiveDirectory, мы получаем это исключение - 0x8007203B.

В основном мы развернули веб-сервис, который использует класс DirectoryEntry & DirectorySearcher для поиска пользователя в AD, и иногда это исключение происходит. Но когда мы делаем IISReset, он снова работает нормально.

Код очень прост, как это:

DirectoryEntry domainUser = new DirectoryEntry("LDAP://xxx.yyy/dc=xxx,dc=yyy", "domain\user", "pwd", AuthenticationTypes.Secure); 
DirectoryEntry result = new DirectorySearcher(domainUser, filter);

Только несколько раз это случается. У меня не так много информации, чтобы дать какие-либо предположения, высоко ценится

Вот так выглядит мой фильтр

public static string BuildFilter(DirectoryEntry dirEntry, string userName, string userMail)
{
   try
   {
      string filter = string.Empty;

      if (!string.IsNullOrEmpty(userName) && string.IsNullOrEmpty(userMail))
         filter = string.Format(@"(&(objectClass=user)(samaccounttype=805306368)(|(CN={0})(samaccountname={0})))", userName);
      else if (string.IsNullOrEmpty(userName) && !string.IsNullOrEmpty(userMail))
         filter = string.Format(@"(&(objectClass=user)(samaccounttype=805306368)(mail={0}))", userMail);
      else
         filter = string.Format(@"(&(objectClass=user)(samaccounttype=805306368)(|(CN={0})(samaccountname={0})(mail={1})))", userName, userMail);

      return filter;
   }
   catch (Exception ex)
   {
       _logger.Error("BuildUserSearch - Failed to build LDAP search", ex);
   }
   return null;
}

Ответы [ 2 ]

0 голосов
/ 10 июня 2011

Вы говорите, что это просто добавить через некоторое время.Поскольку DirectoryEntry и DirectorySearcher встроены в COM-объект в одноразовый класс, я сначала просто добавил бы несколько using разделов, чтобы убедиться, что базовые объекты полностью освобождены.

using(DirectoryEntry root = new DirectoryEntry(ldapPath))
{
  using(DirectorySearcher searcher=new DirectorySearcher(root))
  {
    ...
  }
  ...
}
0 голосов
/ 09 июня 2011

Любое предположение приветствуется?

Тогда вот мое:

  1. ASP.NET: DirectoryServicesCOMException [...] ;
  2. Коды ошибок Windows: восстановить 0x8007203B.Как восстановить 0x8007203B .

Меня смущает то, что вы говорите, что это работает большую часть времени ...

Помогло ли это?

PS Я обновлюсь, если что-нибудь еще подумаю.

...