Получение выключения ASP.Net Core при запуске события ApplicationStopping в IISExpress
Я знаю, что есть предыдущий вопрос по этому вопросу, также есть проблема GitHub: https://github.com/aspnet/Hosting/issues/846, которая, как представляется, разрешена как Microsoft.AspNetCore.Server.IISIntegration 1.1. Однако, несмотря на наличие этой версии, это все еще не работает в IISExpress (я тестирую его, создавая Debug.WriteLine, а также записывая в файл журнала на ApplicationStopping и ApplicationStopped). Я закрываю IISExpress с помощью виджета панели инструментов.
Я не уверен, что я делаю что-то неправильно, если IISExpress закрыт таким образом, поддерживается как "грациозное завершение", которое запускает эти события. Похоже, что это может хорошо работать в IIS, но вы не можете развиваться локально с ASP.Net Core и полным IIS, по-видимому, поэтому я задаюсь вопросом, есть ли способ инициировать эти события в среде dev для тестирования?
Здесь код в Startup.cs:
public void Configure(IApplicationBuilder app, IApplicationLifetime life, IHostingEnvironment env, ILoggerFactory loggerFactory)
{
// other configure code here
life.ApplicationStopping.Register(() =>
Debug.WriteLine(">>Stopping"));
life.ApplicationStopped.Register(() =>
Debug.WriteLine(">>Stopped"));
}
Ответы
Ответ 1
У меня есть приложение со всеми новейшими обновлениями NuGet и вы можете проверить, что ApplicationStopped и ApplicationStopping не запускаются под IISExpress. ApplicationStarted, похоже, работает нормально.
Я нашел, если вы вызываете приложение непосредственно в моей среде dev, все в порядке.
Эта статья рассказывает вам, как.
Это просто, как выбрать приложение из раскрывающегося списка:
![example]()
Я понимаю, что это не то же самое, что использовать IIS Express, но может помочь вам в решении вашей проблемы.
Почти забытый, для вызова вам нужно ввести Ctrl + C в командном окне, которое появляется при запуске приложения.
Ответ 2
Возможно, у вас может быть метод Application_End в классе, полученном из HttpApplication. Этот метод будет вызываться, когда ваше приложение будет выгружено.