ASP.Net Core Cómo realizar acciones finales en la base de datos cuando la aplicación está a punto de parada

Creo que:

Estoy trabajando en ASP.NET 3.1 Core aplicación. Quiero realizar algunas acciones finales relacionados con la base de datos mientras mi solicitud está a punto de parada. Para hacer eso que estoy tratando de llamar a una función en mi servicio con ámbito que es una capa adicional entre la base de datos y ASP.NET Core.

Startup.cs

public void Configure(IApplicationBuilder app, IHostApplicationLifetime lifetime)
{
    lifetime.ApplicationStopping.Register(() =>
    {
        app.ApplicationServices.GetService<MyService>().SynchronizeChanges();
    });
}

Pero, por desgracia me sale Cannot resolve scoped service 'MyApplication.Services.MyService' from root providererror al que estoy tratando de hacerlo.

Ingvar:

No hay ningún margen cuando la aplicación se está cerrando, por lo Asp.Net núcleo es incapaz de crear servicios restringidos al. Ámbito de aplicación se crea durante la petición http solamente. Si necesita crear un servicio de ámbito de sin ámbito, puede crear un espacio de forma manual:

public void Configure(IApplicationBuilder app, IHostApplicationLifetime lifetime)
{
    lifetime.ApplicationStopping.Register(() =>
    {
        using (var scope = app.ApplicationServices.CreateScope())
        {
            scope.ServiceProvider
              .GetRequiredService<MyService>().SynchronizeChanges();
        }
    });
}

También es probable que pueda registrar su servicio como único o tratar de desactivar la validación Asp.Net Core ámbitos (no recomendado).

Supongo que te gusta

Origin http://43.154.161.224:23101/article/api/json?id=369861&siteId=1
Recomendado
Clasificación