Подтвердить что ты не робот

System.DirectoryServices.DirectorySearcher, вызывающий ошибки "Арифметическая операция при переполнении"

Я получаю следующие прерывистые ошибки, связанные с запросом AD, используя DirectorySearcher.FindOne() или 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()

Это происходит в веб-приложении и, похоже, происходит после того, как приложение работает в течение нескольких часов.

Это документированная проблема в Microsoft Connect, но похоже, что она была отмечена как "не воспроизводимая" и закрыта.

Единственное исправление, которое я нашел здесь, заключается в том, чтобы периодически перезапускать пул приложений, что является довольно суровым обходным решением и не является жизнеспособным, когда ваши пользователи в середине работы.

Кто-нибудь испытал это, и если да, то как это было разрешено?

Я пытаюсь использовать кеширование, но это просто задерживает неизбежное, пока вы не нажмете определенный порог с точки зрения количества вызовов AD, поскольку люди сообщали, что каждый раз, когда вызов API делает его утечка памяти.

Любая помощь будет высоко оценена.

4b9b3361

Ответ 1

Создайте API AD и запустите его в своем собственном пуле приложений. Рециркуляция происходит каждые несколько часов. Весь API будет обрабатывать вызовы AD. похоже, что у вас уже есть код, просто нужно перейти к API. Я нашел API AD очень полезным для многих других проектов, а также вернусь к нему в качестве контрольной точки.