2009-08-20 61 views
2

我工作在Active Directory managament應用。除了典型的創建新用戶,啓用/禁用帳戶,重置我的密碼等之外,它還管理所有客戶端Web應用程序的應用程序權限。應用程序管理由成千上萬的AD組處理,例如由應用程序,部分和站點的3個字母代碼構建,還有數百個AD組確定協調員可以授予哪些應用程序和位置權限。所有這些組依次屬於其他組,因此我通常使用MemberOf屬性過濾組列表以查找用戶直接屬於的組(或者每個人都有權執行所有操作)。我在整個應用程序的31個地方使用FindByIdentity方法廣泛使用System.DirectoryServices.AccountManagment命名空間。此方法在內部ADStoreCtx類上調用私有方法FindPrincipalByIdentRefHelper。一個SearchResultCollection創建但不能設置成最終通常一次或兩次,每天在Web服務器運行的內存和所有IIS之前在Web服務器停止responsing應用的復位,因爲由COM對象所使用的資源不是永遠relased 。FindByIdentity在System.DirectoryServices.AccountManagment內存問題

有些地方我可以回退到底層的目錄對象,但是我在很多地方使用了Principal的屬性 - 這大大改進了在.Net 2.0中使用深奧的廣告屬性名稱目錄服務代碼。

我已經聯繫了微軟關於這個問題,它被固定在.NET 4.0中,但他們目前沒有計劃修復它在3.5除非有intrest在關於它的社區。

我只找到關於它的信息在幾個地方

在MDSN文檔社區內容狀態的存在是在底部的內存泄漏(想我應該讀,使用該方法之前)

http://msdn.microsoft.com/en-us/library/bb345628.aspx

和有關類是內部和違規的方法外不公開SearchResultsCollection所以我不能在查詢結果處理掉或者從類繼承和覆蓋的方法。

所以我的問題是

有其他人遇到這個問題?如果是的話你能解決它嗎?

我必須重寫,除了不使用任何NET 3.5的活動目錄代碼的應用程序的任何選項?

感謝

回答

0

我也遇到了同樣的錯誤,也沒有,我根本就沒有使用的DirectoryEntry方法以外的解決方法。