Я не могу отлаживать файл global.asax!
У меня есть некоторые коды в методе Application_Start()
, но когда я устанавливаю точку прерывания в методе, он игнорируется!
Это нормально?
Я не могу отлаживать файл global.asax!
У меня есть некоторые коды в методе Application_Start()
, но когда я устанавливаю точку прерывания в методе, он игнорируется!
Это нормально?
Возможно, вам стоит попробовать:
Простым способом взлома Application_Start()
является использование класса System.Diagnostics.Debugger
. Вы можете заставить приложение сломаться, вставив System.Diagnostics.Debugger.Break()
, где вы хотите, чтобы отладчик сломался.
void Application_Start(object sender, EventArgs e)
{
System.Diagnostics.Debugger.Break();
// ...
}
Application_Start()
вызывается один раз за AppDomain. Если вы не нажмете на точку останова, это значит, что AppDomain уже создан, поэтому выполните следующие действия:
Убедитесь, что ваше веб-приложение находится в режиме отладки (<compilation debug="true">
в web.config).
Если вы используете разработчик IIS, запущенный VS, просто перезапустите его или перестройте приложение.
Если вы используете обычный IIS, у вас есть два варианта:
Debug - Attach to process
, введите имя компьютера и затем выберите процесс для отладки. Обычно файл w3wp.exe работает в режиме управляемого режима.Да, это нормально.
Application_Start()
обрабатывается IIS.
Но все остальные методы, например Session_Start
, и все остальные, кроме Application_Start()
, можно отлаживать в обычном режиме.
Другой альтернативой принятому System.Diagnostics.Debugger.Break();
будет
void Application_Start(object sender, EventArgs e)
{
System.Diagnostics.Debugger.Launch();
//...
}
который не должен прерывать код и должен запускать отладчик, даже если служба была запущена с разными правами.
Удалите global.asax
и добавьте новый. В моем решении были global.asax
и a global.asax.cs
.
Все методы (Session_Start
, Application_Start
,...) были в бот файлах, но были рассмотрены только те из global.asax
. Итак, точки останова и код в cs ничего не делают.
Только после воссоздания файла global.asax.cs
имел соответствующие методы, и они выполнялись.
Не ожидайте немедленного вызова функции Application_Start() нажатием f5. Application_Start() вызывается только во время первого запроса к приложению. Странно, но верно.
Если все ответы не работают, попробуйте:
<compilation debug="true" ... />
в web.config
.;)
Для меня моя точка останова отладки уже выполнена в IIS к тому времени, когда отладчик присоединен. Таким образом, решение было изменить global.asax с небольшим пространством и сохранить файл. После обновления моя точка останова теперь достигнута.
Решение здесь: https://wakeupandcode.com/hitting-breakpoints-in-global-asax/