Не удается выполнить разрыв в global.asax/Application_Start
Я получил точку прерывания в первой строке Application_Start()
, но Visual Studio не будет разбивать ее.
Visual Studio присоединились к рабочему процессу IIS:
Автоматическое прикрепление к процессу '[2092] w3wp.exe' на машине 'SRD00510' преуспел.
Моя контрольная точка в домашнем контроллере работает.
Обновление
Я пробовал:
-
iisreset
- перезапущенная визуальная студия
- Rebooted.
- Попробовал переустановить aspnet (
aspnet_regiis -i
)
Ответы
Ответ 1
Считывая ваш вопрос, я предполагаю, что вы используете IIS для отладки, а не для Visual Studio Development Server.
В этом случае запуск отладки запускается сложно, потому что он вызывается только один раз, когда пул приложений запускается или перерабатывается. Когда Visual Studio присоединяется к процессу, Application_Start уже запущен.
Хитрость заключается в том, чтобы сделать пул приложений повторно, не убивая процесс, к которому вы привязаны.
Выполните следующие действия:
- В Visual Studio (должен быть запущен как администратор) установите точку останова в
global.asax.cs и начать отладку как обычно (F5). Страница открывается в
ваш веб-браузер, но точка останова не попала.
- Теперь трюк: в текстовом редакторе откройте web.config, откуда он
обслуживается IIS, меняет его (например, введите пустую строку где-нибудь) и
сохрани это. В отличие от утилизации пула приложений в IIS, это
позволяет пулу приложений перезаписывать (и, таким образом,
Application_Start в global.asax.cs в следующий раз, когда веб-сайт
), не убивая процесс, к которому вы привязаны.
- В своем веб-браузере перезагрузите страницу. Теперь точка останова должна быть удалена!
Это работает для меня (IIS 7.5, VS2015).
Ответ 2
Поместите эту строку в свой Application_Start().
Debugger.Break();
Это предоставит вам диалог, который позволит вам выбрать отладчик. Возможно, потребуется перезапустить пул приложений.
Ответ 3
Application_Start()
запускается только один раз, когда приложение запускается. Несколько вещей, которые перезапускают приложение:
- Изменения в web.config
- переработка рабочего процесса - вы можете сделать это в диспетчере IIS или запустив
iisreset
в командной строке.
Ответ 4
Мое решение - перейти на использование "Visual Studio Development Server" для решения проблем класса приложения (Global.asax). Когда это будет сделано, я вернусь к IIS.
Ответ 5
Я предполагаю, что вы загружаете приложение, нажав кнопку "debug" в Visual Studio? Это то, что я делаю (в VS 2012), и вижу подобные проблемы. Нажатие этой кнопки в первый раз запускает приложение и правильно попадает в точку останова. Но, похоже, после того, как я прекратил отладки, приложение само по себе продолжает идти. Итак, будущие попытки отладки просто присоединяются к существующему процессу.
Там есть кнопка "перезапустить" рядом с кнопкой "отлаживать отладки", поэтому я бы предположил, что щелчок, по крайней мере, изменит ситуацию.
Приложение для отладки не отображается в диспетчере IIS, поэтому я не могу его остановить. Аналогично, iisreset тоже не поймает его.
Единственное, что я догадался до сих пор, это изменить строку кода, заставив визуальную студию запускать сборку, а затем она убивает существующий процесс и начинается. Вид раздражает, если я просто хочу пройти через него несколько раз.
Я не считаю это подходящим "ответом", но это может быть полезным обходным путем для вас, пока кто-нибудь не придет с реальным ответом.
Ответ 6
У меня есть проблема, прежде чем сделать это:
- Запустите очистку моего решения (щелкните правой кнопкой мыши по решению node и нажмите "Очистить" ).
- Закрыть решение
- Файл → Выход на визуальной студии
- Если у вас есть несколько экземпляров запуска visual studio, выйдите из всех экземпляров. Убедитесь, что "devenv.exe" не указан в процессах в диспетчере задач
- Удалить файл параметров пользователя (.suo), обычно в том же каталоге, что и файл вашего решения (.sln)
- Переработать рабочий процесс IIS или использовать сервер разработки, убить этот процесс.
Теперь откройте свое решение и сделайте снимок. (скрестите пальцы:))
Ответ 7
Всякий раз, когда вы запускаете приложение в первый раз или начинаете приложение, появляется сервер разработки ASP.Net - порт [номер порта],
Application_Start()
выполняется один раз в процессе приложения.
Если вы хотите, чтобы точка останова была достигнута, вам нужно остановить порт сервера разработки ASP.Net и снова запустить приложение.
Ответ 8
если [2092] w3wp.exe - это сервис, который вы создали, попробуйте следующее:
stop service → rebuild service project → start rebuilt service → попытаться отладить