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

Функция остановки Kestrel в Startup.cs в ASP.NET Core

Есть ли функция отключения при использовании Microsoft.AspNet.Server.Kestrel? Ядро ASP.NET(ранее ASP.NET vNext) явно имеет последовательность запуска, но не упоминает о последовательности выключения и о том, как обрабатывать чистое закрытие.

4b9b3361

Ответ 1

В ASP.NET Core вы можете зарегистрироваться на токенах отмены, предоставляемых IApplicationLifetime

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

    private void OnShutdown()
    {
         // Do your cleanup here
    }
}

IApplicationLifetime также выводит токены отмены для ApplicationStopped и ApplicationStarted, а также метод StopApplication() для остановки приложения.

Ответ 2

В дополнение к исходному ответу, у меня была ошибка при попытке связать IApplicationLifetime внутри конструктора.

Я решил это, выполнив:

public class Startup 
{
    public void Configure(IApplicationBuilder app) 
    {
        var applicationLifetime = app.ApplicationServices.GetRequiredService<IApplicationLifetime>();
        applicationLifetime.ApplicationStopping.Register(OnShutdown);
    }

    private void OnShutdown()
    {
         // Do your cleanup here
    }
}