Active directory System.DirectoryServices.AccountManagement内存问题中的FindByIdentity
我正在开发一个active directory管理应用程序。除了典型的创建新用户、启用/禁用帐户、重置密码等操作外,它还管理所有客户端web应用程序的应用程序权限。应用程序管理由数千个广告组处理,这些广告组由应用程序、分区和站点的3个字母代码构建,还有数百个广告组决定协调员可以授予哪些应用程序和位置权限。所有这些组都属于其他组,因此我通常使用MemberOf属性过滤组列表,以查找用户直接属于的组(或者每个人都有权做任何事情)。在整个应用程序中,我使用FindByIdentity方法在31个位置广泛使用了System.DirectoryServices.AccountManagement命名空间。此方法调用内部ADStoreTX类上的私有方法FindPrincipalByIdentitRefHelper。SearchResultCollection已创建但未被释放,因此通常每天会有一到两次web服务器内存耗尽,web服务器上的所有应用程序都会停止响应,直到iis被重置,因为com对象使用的资源从未被释放 在某些地方,我回到了底层目录对象,但在很多地方,我使用了主体上的属性——这比在.Net 2.0目录服务代码中使用深奥的ad属性名称有了很大的改进 我已经就这个问题联系了微软,它已经在.NET4.0中修复了,但是他们目前没有计划在3.5中修复它,除非社区对此感兴趣 我只在几个地方找到了关于它的信息 社区内容状态的MDSN文档底部有内存泄漏(我想我应该在使用该方法之前阅读) 并且所讨论的类是内部的,并且不会在有问题的方法之外公开SearchResultsCollection,因此我无法获取结果来处理它们或从类继承并重写该方法 所以我的问题是 还有其他人遇到过这个问题吗?如果是这样的话,你能解决这个问题吗 除了不使用任何.Net 3.5 active directory代码重写应用程序外,我还有其他选择吗Active directory System.DirectoryServices.AccountManagement内存问题中的FindByIdentity,active-directory,directoryservices,Active Directory,Directoryservices,我正在开发一个active directory管理应用程序。除了典型的创建新用户、启用/禁用帐户、重置密码等操作外,它还管理所有客户端web应用程序的应用程序权限。应用程序管理由数千个广告组处理,这些广告组由应用程序、分区和站点的3个字母代码构建,还有数百个广告组决定协调员可以授予哪些应用程序和位置权限。所有这些组都属于其他组,因此我通常使用MemberOf属性过滤组列表,以查找用户直接属于的组(或者每个人都有权做任何事情)。在整个应用程序中,我使用FindByIdentity方法在31个位置广
谢谢,我遇到了相同的错误,没有,除了使用DirectoryEntry方法之外,我没有其他解决方法。我遇到了相同的错误,没有,除了使用DirectoryEntry方法外,我没有其他解决方法。将对directorysearcher的调用包装在using块中,并将resultcollection包装在using块中,并显式地对结果调用.Dispose()。请参见此处的答案:
将对directorysearcher的调用包装在using块内,并将resultcollection包装在using块内,并显式调用结果上的.Dispose()。请参见此处的答案: