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

Не удается выполнить разрыв в global.asax/Application_Start

Я получил точку прерывания в первой строке Application_Start(), но Visual Studio не будет разбивать ее.

Visual Studio присоединились к рабочему процессу IIS:

Автоматическое прикрепление к процессу '[2092] w3wp.exe' на машине 'SRD00510' преуспел.

Моя контрольная точка в домашнем контроллере работает.

Обновление

Я пробовал:

  • iisreset
  • перезапущенная визуальная студия
  • Rebooted.
  • Попробовал переустановить aspnet (aspnet_regiis -i)
4b9b3361

Ответ 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 → попытаться отладить