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

Можно ли отлаживать Global.asax?

Я не могу отлаживать файл global.asax!

У меня есть некоторые коды в методе Application_Start(), но когда я устанавливаю точку прерывания в методе, он игнорируется!

Это нормально?

4b9b3361

Ответ 1

Возможно, вам стоит попробовать:

  • остановка сервера разработки на панели задач
  • переключение конфигурации из версии для отладки

Ответ 2

Простым способом взлома Application_Start() является использование класса System.Diagnostics.Debugger. Вы можете заставить приложение сломаться, вставив System.Diagnostics.Debugger.Break(), где вы хотите, чтобы отладчик сломался.

void Application_Start(object sender, EventArgs e) 
{
     System.Diagnostics.Debugger.Break();

     // ...
}

Ответ 3

  • Прикрепите отладчик к процессу IIS.
  • Откройте файл global.asax и поставьте точку останова.
  • Добавьте пробел в файл web.config и сохраните файл (это приведет к тому, что текущее веб-приложение будет reset);
  • Обновить/перейти на веб-страницу на сайте.
  • смотреть в изумлении, когда отладчик останавливается в точке останова.:)

Ответ 4

Application_Start() вызывается один раз за AppDomain. Если вы не нажмете на точку останова, это значит, что AppDomain уже создан, поэтому выполните следующие действия:

  • В вашей панели быстрого запуска есть значок для веб-сервера VS (это тот, который говорит "Local Host Some Port" ). Щелкните правой кнопкой мыши и выберите "Стоп" или "Закрыть". Это должно убить AppDomain.
    • Если вы используете IIS, вам необходимо перезагрузить свой сайт вручную.
    • В качестве альтернативы, изменение веб-конфигурации или файла Global.asax обычно достаточно, чтобы перезапустить AppDomain.
  • Перезагрузите свою отладку, теперь вы должны нажать на свои точки останова.

Ответ 5

Убедитесь, что ваше веб-приложение находится в режиме отладки (<compilation debug="true"> в web.config).

Если вы используете разработчик IIS, запущенный VS, просто перезапустите его или перестройте приложение.

Если вы используете обычный IIS, у вас есть два варианта:

  • Для веб-сайта настроена работа с папкой разработки (там, где развертывается веб-проект VS), вам просто нужно перезапустить пул приложений, установленный для этого веб-сайта, и начать отладку до того, как первый запрос достигнет сервера (вы всегда можете перезапустить приложение пул во время отладки).
  • Для веб-сайта, который работает в другой папке или даже на удаленном сервере, вы должны подключиться к процессу. Для этого вам нужен удаленный отладчик, установленный на удаленном компьютере или ваш собственный (в зависимости от местоположения веб-сервера), и используйте меню Debug - Attach to process, введите имя компьютера и затем выберите процесс для отладки. Обычно файл w3wp.exe работает в режиме управляемого режима.

Ответ 6

Да, это нормально.

Application_Start() обрабатывается IIS.

Но все остальные методы, например Session_Start, и все остальные, кроме Application_Start(), можно отлаживать в обычном режиме.

Ответ 7

Другой альтернативой принятому System.Diagnostics.Debugger.Break(); будет

void Application_Start(object sender, EventArgs e) 
{
   System.Diagnostics.Debugger.Launch();
   //...
}

который не должен прерывать код и должен запускать отладчик, даже если служба была запущена с разными правами.

Ответ 8

Удалите global.asax и добавьте новый. В моем решении были global.asax и a global.asax.cs.

Все методы (Session_Start, Application_Start,...) были в бот файлах, но были рассмотрены только те из global.asax. Итак, точки останова и код в cs ничего не делают.
Только после воссоздания файла global.asax.cs имел соответствующие методы, и они выполнялись.

Ответ 9

Не ожидайте немедленного вызова функции Application_Start() нажатием f5. Application_Start() вызывается только во время первого запроса к приложению. Странно, но верно.

Ответ 10

Если все ответы не работают, попробуйте:

<compilation debug="true" ... />

в web.config.;)

Ответ 11

Для меня моя точка останова отладки уже выполнена в IIS к тому времени, когда отладчик присоединен. Таким образом, решение было изменить global.asax с небольшим пространством и сохранить файл. После обновления моя точка останова теперь достигнута.

Решение здесь: https://wakeupandcode.com/hitting-breakpoints-in-global-asax/