iis - 尝试查询 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 应用程序池并回收它。回收后,代码工作......一段时间。然后错误在几个小时后再次出现。
需要注意的附加信息:
- 出现错误时,应用程序池仍在运行。不过,回收解决了它
- 我在配置相同的 2 个不同的 Web 服务器上运行相同的代码。此问题出现在第一个 Web 服务器上,但从未出现在第二个 Web 服务器上
- 应用程序池在 AD 服务帐户下运行。两台服务器的应用池使用同一个账号
- 我已尝试重新创建与此 Web 应用程序关联的应用程序池,但未成功
对于在 IIS 中寻找永久解决方案的任何建议,我将不胜感激。我不能每隔几个小时就回收一次应用程序池。
谢谢
解决方案
推荐阅读
- c# - 如何使用 ComboBox 过滤 ListView?
- php - 使用二级值对二维数组进行排序
- javascript - 样式化的组件样式不适用于不同的 react-router 路由
- javascript - 数据正确返回但不能正确显示返回的数据?
- javascript - 如何设置单独的谷歌地图标记图标
- reactjs - 如何通过单击菜单访问页面
- material-ui - 将 YUP 与 Material-UI 文本字段一起使用
- oracle-data-integrator - ODI 11g 逆向工程文件修改
- java - 我如何制作一个在文件关闭时删除文件的手表服务?
- javascript - 在 Node.js 中,如果 v8 运行您的 JavaScript,那么运行 Node.js Api 的是什么?