2016-02-07 10 views

Antwort

23

In ASP.NET-Core können Sie den Stornierungs Tokens von IApplicationLifetime

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

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

IApplicationLifetime auch Storno Token für ApplicationStopped und ApplicationStarted sowie ein StopApplication() Verfahren bereitgestellt registrieren aussetzt, die Anwendung zu beenden.

+0

Ist das auf allen Betriebssystemen und Servern funktionieren soll? Ich war nicht in der Lage, es auf OSX + Kestrel arbeiten zu lassen. – opiethehokie

+0

Es sollte auf allen Plattformen funktionieren, wenn es nicht ein Fehler sein könnte. Es gibt einige alte Probleme auf github, vielleicht versuchst du davidfowls Workaround in https://github.com/aspnet/Hosting/issues/151, andernfalls versuche ein Problem auf https://github.com/aspnet/Hosting/issues zu öffnen ein Fehler, es ist immer noch in RC1 Vorbereitung für RC2 – Tseng

+0

@opiethehokie: Auch möglicherweise im Zusammenhang mit https://github.com/aspnet/Hosting/issues/516. Es ist für Linux, aber SIGINT und SIGTERM werden auch auf MacOS verwendet, soweit ich weiß. Nicht vertraut genug, um zu wissen, welches der Signale MacOS sendet, um den Prozess zu stoppen. Auch kann es interessant sein zu wissen, ob Sie dnx core 1.0 oder gegen das volle mono framework – Tseng

9

Zusätzlich zu der ursprünglichen Antwort hatte ich einen Fehler beim Verbinden der IApplicationLifetime innerhalb des Konstruktors.

Ich löste dies tun:

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

Dies funktioniert ohne Verwendung einer Startup-Klasse, wenn Sie Ihren Webhost manuell von Main konfigurieren. –

Verwandte Themen