DirectorySearcher.FindAll抛出「Item has already been added. Key in dictionary: 'objectsid'」错误排查求助
DirectorySearcher.FindAll抛出「Item has already been added. Key in dictionary: 'objectsid'」错误排查求助
各位大佬好,想请教个最近棘手的问题:
我们有个基于.NET 4.0的WinForms应用,在不同机构的环境里稳定跑了8年多,一直没出过什么大问题。但最近半年里,陆续有来自不同机构的几个用户反馈同一个错误——调用DirectorySearcher.FindAll()的时候,会抛出**Item has already been added. Key in dictionary: 'objectsid'**的异常。
先贴一下相关的核心代码片段:
using (DirectorySearcher searcher = new DirectorySearcher(root)) { searcher.PageSize = 1000; searcher.PropertiesToLoad.AddRange(new string[] { "whenCreated", "whenChanged", "cn", "description", "objectsid" }); // 其他搜索条件配置... using (SearchResultCollection results = searcher.FindAll()) { // 遍历处理搜索结果的逻辑 foreach (SearchResult result in results) { // 读取AD对象属性的操作... } } }
目前我们自己排查过的几个方向:
- 代码本身已经稳定运行多年,99%的用户都正常,基本排除是代码逻辑的普遍问题
- 询问了出问题的用户,他们的AD环境近期没有做过大规模架构变更,日常使用也正常
- 尝试让用户缩小搜索范围,或者只加载少量核心属性,偶尔还是会触发这个错误
- 初步检查了用户AD中疑似的对象,暂时没发现
objectsid属性重复的条目
实在是摸不着头绪了,有没有遇到过类似问题的朋友?或者能给些新的排查思路?比如是不是AD服务器的某些隐性数据异常?或者.NET 4.0在特定环境下的兼容性bug?
内容来源于stack exchange
相关产品推荐
相关产品推荐

