23

DirectorySearcher.FindOne()またはを使用した AD のクエリに関連して、次の断続的なエラーが発生し FindAll()ます。

System.OverflowException: Arithmetic operation resulted in an overflow.
     at System.DirectoryServices.SearchResultCollection.ResultsEnumerator.GetCurrentResult()
     at System.DirectoryServices.SearchResultCollection.ResultsEnumerator.get_Current()
     at System.DirectoryServices.SearchResultCollection.ResultsEnumerator.System.Collections.IEnumerator.get_Current()

これは Web アプリで発生しており、アプリが数時間実行された後に発生するようです。

これはMicrosoft Connect に関する文書化された問題ですが、 「再現不可能」とマークされてクローズされたようです。

私がここで見つけた唯一の修正は、アプリ プールを定期的にリサイクルすることです。これはかなり厳しい回避策であり、ユーザーが作業中の場合は実行できません。

誰かがこれを経験しましたか?もしそうなら、これはどのように解決されましたか?

私はキャッシュを使用しようとしましたが、これは、API 呼び出しが行われるたびにメモリ リークが発生すると報告されているため、AD 呼び出しの数に関して特定のしきい値に達するまで、避けられないことを遅らせるだけです。

どんな助けでも大歓迎です。

4

1 に答える 1

1

AD API を構築し、独自のアプリ プールで実行します。数時間おきのリサイクル。API が処理するのは、AD への呼び出しだけです。コードは既にあるようですが、API に移動する必要があります。AD API は他の多くのプロジェクトにも非常に役立つことがわかったので、参照点として引き続き使用しています。

于 2015-07-16T18:05:04.883 に答える