首页 > 解决方案 > 尝试查询 Active Directory 时出错 - 需要应用程序池回收

问题描述

我在用于为用户查询 AD 的 .NET Web 应用程序中有以下代码块

using (DirectoryEntry de = new DirectoryEntry(ldap))
{
    using (DirectorySearcher adSearch = new DirectorySearcher(de))
    {
        adSearch.Filter = "(&(objectCategory=person)(objectClass=user)(samAccountName=username))";
        SearchResult adSearchResult = adSearch.FindOne();
    }
}

当我运行它时,有时会出现以下错误:

System.Runtime.InteropServices.COMException (0x80005000):在 System.DirectoryServices.DirectoryEntry.Bind() 在 System.DirectoryServices.DirectoryEntry.Bind(Boolean throwIfFail)
在 System.DirectoryServices.DirectoryEntry.get_AdsObject() 的未知错误 (0x80005000) .DirectoryServices.DirectorySearcher.FindAll(Boolean findMoreThanOne) 在 System.DirectoryServices.DirectorySearcher.FindOne()

抛出此错误时,每次运行时都会出错。要更正此问题,我必须转到与此 Web 应用程序关联的 IIS 应用程序池并回收它。回收后,代码工作......一段时间。然后错误在几个小时后再次出现。

需要注意的附加信息:

对于在 IIS 中寻找永久解决方案的任何建议,我将不胜感激。我不能每隔几个小时就回收一次应用程序池。

谢谢

标签: iisactive-directoryapplication-pool

解决方案


推荐阅读