当我们尝试在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;
}
答案 0 :(得分:0)
你说这只是在一段时间之后才追加。由于DirectoryEntry和DirectorySearcher是在COM对象上构建成一次性类的,我首先会添加一些using
部分,以确保底层对象被核心释放。
using(DirectoryEntry root = new DirectoryEntry(ldapPath))
{
using(DirectorySearcher searcher=new DirectorySearcher(root))
{
...
}
...
}
答案 1 :(得分:-2)
有什么猜测值得赞赏吗?
然后是我的:
让我感到困惑的是你说它大部分时间都有效......
这有帮助吗?
P.S。如果我想到其他任何事情,我会更新。