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;
}
你说这只是一段时间后的追加。由于DirectoryEntry和DirectorySearcher是在COM对象上构建到一次性类中的,所以我首先只添加一些using
部分,以确保底层对象被正确释放。
using(DirectoryEntry root = new DirectoryEntry(ldapPath))
{
using(DirectorySearcher searcher=new DirectorySearcher(root))
{
...
}
...
}
有什么猜测吗?
然后是我的:
- ASP.NET:DirectoryServicesCOMException[…]
- Windows错误代码:修复0x8007203B。如何修复0x8007203B
让我困惑的是,你说它大多数时候都有效。。。
这有帮助吗?
附言:如果我想到其他事情,我会更新的。