Esiste una funzione di arresto quando si utilizza Microsoft.AspNet.Server.Kestrel
? ASP.NET Core (precedentemente ASP.NET vNext) ha chiaramente una sequenza di avvio, ma non menziona la sequenza di spegnimento e come gestire la chiusura pulita.Funzione di arresto di Kestrel in Startup.cs in ASP.NET Core
18
A
risposta
23
In ASP.NET core è possibile registrarsi per i gettoni di cancellazione forniti da IApplicationLifetime
public class Startup
{
public void Configure(IApplicationBuilder app, IApplicationLifetime applicationLifetime)
{
applicationLifetime.ApplicationStopping.Register(OnShutdown);
}
private void OnShutdown()
{
// Do your cleanup here
}
}
IApplicationLifetime
è anche esporre i token di annullamento per ApplicationStopped
e ApplicationStarted
così come un metodo StopApplication()
per arrestare l'applicazione.
9
In aggiunta alla risposta originale, ho avuto un errore durante il tentativo di collegare IApplicationLifetime all'interno del costruttore.
ho risolto questo facendo:
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
}
}
+1
Questo funziona senza usare una classe di avvio quando si configura manualmente il proprio webhost dal main. –
Problemi correlati
- 1. Repository generico in ASP.NET Core senza avere una riga AddScoped separata per tabella in Startup.cs?
- 2. Asp.Net 5 MVC 6 Startup.cs Disaccoppiamento in Beta8
- 3. Arresto anomalo di Core Core (null)
- 4. Perché ASP.NET 5 su Linux richiede kestrel?
- 5. Come utilizzare UseStaticFiles in ASP.NET core 1
- 6. Come abilitare ClientCache in ASP.NET Core
- 7. IHttpActionRisultati e metodi di supporto in ASP.NET Core
- 8. Request.Files in ASP.NET CORE
- 9. UserHostAddress in Asp.net Core
- 10. @ Html.EnumDropDownListFor in Asp.net Core
- 11. @ Html.Azione in Asp.Net Core
- 12. Libreria di riferimento in ASP.NET Core 1.0 (vNext)
- 13. Autenticazione token bearer in ASP.NET Core
- 14. Funzione di arresto Java non in esecuzione
- 15. Riscrittura di URL in ASP.NET Core RC2
- 16. Quale componente sta gestendo l'allocazione dei thread in ASP.NET Core?
- 17. Proprietà dell'iniezione in Asp.Net Core
- 18. Nessun intellisense in ASP.Net Core
- 19. Modificare le intestazioni dei file statici in Asp.net Core
- 20. validatori password asp.net core mvc
- 21. Come ascoltare l'evento di arresto di IIS in ASP.NET
- 22. Registrazione di ASP.NET Core 1.0
- 23. Progetto ASP.NET Core 1.0 F #
- 24. Come visualizzare la console di log di LoggerFactory in ASP.NET Core 1.0 per un'app Web?
- 25. Configurazione di AutoMapper 4.2 con IoC integrato in ASP.NET Core 1.0 MVC6
- 26. Aggiunta di DbContextOptions in Startup.cs non registrazione dell'archivio dati
- 27. uso dei metodi ConfigureServices e Configure in Startup.cs in asp.net vnext
- 28. Risoluzione di istanze con ASP.NET Core DI
- 29. Esecuzione di prima applicazione ASP.NET 5 utilizzando VSCode, DNX e risultati Kestrel in IOException
- 30. Seleziona Tag Helper in ASP.NET Core MVC
E 'questo dovrebbe funzionare su tutti i sistemi operativi e server? Non sono stato in grado di farlo funzionare su OSX + Kestrel. – opiethehokie
Dovrebbe funzionare su tutte le piattaforme, altrimenti potrebbe essere un bug. Ci sono alcuni vecchi problemi su github, forse provi la soluzione alternativa di davidfowl in https://github.com/aspnet/Hosting/issues/151 altrimenti prova ad aprire un problema su https://github.com/aspnet/Hosting/issues potrebbe essere un bug, è ancora in RC1 in preparazione per RC2 – Tseng
@opiethehokie: potrebbe anche essere correlato a https://github.com/aspnet/Hosting/issues/516. È per Linux, ma SIGINT e SIGTERM sono utilizzati anche su MacOS per quanto ne so. Non abbastanza familiare da sapere quale dei segnali inviati da MacOS per fermare il processo. Potrebbe anche essere interessante sapere se si sta utilizzando dnx core 1.0 o contro il framework mono completo – Tseng