Есть ли способ узнать, что IIS хочет закрыть мое веб-приложение? - PullRequest
0 голосов
/ 22 апреля 2020

Я рассматриваю использование QueueBackgroundWorkItem для фоновых рабочих элементов на моем ASP. NET REST-сервере Web-API2. Это отлично работает для моего варианта использования, поскольку все выполняемые задания завершаются и записываются в БД до закрытия веб-приложения. И заменяющее веб-приложение вступает во владение и может возвращать выполненные задания.

Однако, когда я завершаю задание в фоновом потоке, я не хочу запускать другое, если IIS хочет закрыть приложение. Есть ли способ узнать, ожидает ли IIS выполнения задач и будет ли он закрыт?

1 Ответ

0 голосов
/ 23 апреля 2020

Вы можете попробовать использовать configure в классе запуска. ниже приведены параметры конфигурации:

IApplicationBuilder

IHostingEnvironment

ILoggerFactory

IApplicationLifetime

В интерфейсе IApplicationLifetime вы можете зарегистрировать событие, которое является срабатывает, когда приложение останавливается:

public class Startup
{
    public void Configure(IApplicationBuilder app, IApplicationLifetime applicationLifetime)
    {
        applicationLifetime.ApplicationStopping.Register(OnShutdown);
    }

    private void OnShutdown()
    {
         //this code is called when the application stops
    }
}

Вы можете обратиться к ссылкам ниже или более подробно:

Как прослушать событие отключения IIS в ASP. NET

...