Тайм-аут запроса отладки (System.Web.HttpException) - PullRequest
4 голосов
/ 27 февраля 2012

Согласно MSDN относительно system.web httpRuntime executeTimeout:

This time-out applies only if the debug attribute in the compilation element is
False.  Therefore, if the debug attribute is True, you do not have to set this
attribute to a large value in order to avoid application shutdown while you are
debugging.

Это отличная функция для большинства отладок, так как она позволяет запросу остаться в живых во время отладки. Что если я захочу отладить саму ошибку тайм-аута ?! Независимо от того, какие свойства тайм-аута я установил в любом месте. Похоже, что .NET предоставляет неограниченное время, поэтому я никогда не улавливаю исключение для отладки!

1 Ответ

0 голосов
/ 06 сентября 2013

Если вы можете производить длительное выполнение локально, просто перейдите в меню «Отладка» и выберите «Разбить все».Затем вы можете использовать представление Debug -> Windows -> Threads, чтобы просмотреть все ваши активные потоки.Вы, вероятно, сможете определить, что занимает так много времени.

В качестве альтернативы, вы можете установить Debug = false;затем присоедините Visual Studio к вашему процессу и установите его так, чтобы он прерывался при возникновении экземпляров исключений ThreadAbortException.

В качестве альтернативы можно установить для DebugDiag значение захватывать файл дампа при обнаружении длительного выполнения,Вы можете использовать WinDbg (жесткий) или Visual Studio 2010 и более поздние версии для загрузки этих файлов дампа и проверки состояния вашей программы.

Наконец, вы можете попытаться рефлексивно изменить поведение класса RequestTimeoutManager, который периодическивызывает TimeoutIfNeeded (DateTime сейчас).Однако я не могу легко найти способ изменить это, чтобы использовать поведение debug = false.

...