System.DirectoryServices.DirectoryServicesCOMException(0x800

本文关键字:0x800 DirectoryServicesCOMException DirectoryServices System | 更新日期: 2023-09-27 17:58:41

当我们尝试在ActiveDirectory中搜索用户时,我们会得到异常-0x8007203B

基本上,我们部署了一个web服务,它使用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;
}

System.DirectoryServices.DirectoryServicesCOMException(0x800

你说这只是一段时间后的追加。由于DirectoryEntry和DirectorySearcher是在COM对象上构建到一次性类中的,所以我首先只添加一些using部分,以确保底层对象被正确释放。

using(DirectoryEntry root = new DirectoryEntry(ldapPath))
{
  using(DirectorySearcher searcher=new DirectorySearcher(root))
  {
    ...
  }
  ...
}

有什么猜测吗?

然后是我的:

  1. ASP.NET:DirectoryServicesCOMException[…]
  2. Windows错误代码:修复0x8007203B。如何修复0x8007203B

让我困惑的是,你说它大多数时候都有效。。。

这有帮助吗?

附言:如果我想到其他事情,我会更新的。