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

Получение выключения 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"));
    }
4b9b3361

Ответ 1

У меня есть приложение со всеми новейшими обновлениями NuGet и вы можете проверить, что ApplicationStopped и ApplicationStopping не запускаются под IISExpress. ApplicationStarted, похоже, работает нормально.

Я нашел, если вы вызываете приложение непосредственно в моей среде dev, все в порядке.

Эта статья рассказывает вам, как.

Это просто, как выбрать приложение из раскрывающегося списка:

example

Я понимаю, что это не то же самое, что использовать IIS Express, но может помочь вам в решении вашей проблемы.

Почти забытый, для вызова вам нужно ввести Ctrl + C в командном окне, которое появляется при запуске приложения.

Ответ 2

Возможно, у вас может быть метод Application_End в классе, полученном из HttpApplication. Этот метод будет вызываться, когда ваше приложение будет выгружено.