Я не могу отлаживать файл 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/