これについては以前に質問があり、GitHubの問題もあることを認識しています: https://github.com/aspnet/Hosting/issues/846 これはMicrosoftの時点で解決されているようです。 AspNetCore.Server.IISIntegration1.1。ただし、このバージョンを使用しているにもかかわらず、IISExpressでは機能しないようです(Debug.WriteLineを実行し、ApplicationStoppingおよびApplicationStoppedのログファイルに書き込むことでテストしています)。ツールトレイウィジェットを使用してIISExpressをシャットダウンしています。
IISExpressがこの方法でシャットダウンすることが、これらのイベントをトリガーする「グレースフルシャットダウン」としてサポートされているかどうか、何か問題があるかどうかはわかりません。これはIISでうまくいくようですが、ASP.NetCoreと完全なIISでローカルに開発することはできないので、あるのではないかと思います。テスト用の開発環境でこれらのイベントをトリガーする方法はありますか?
Startup.csのコードは次のとおりです。
public void Configure(IApplicationBuilder app, IApplicationLifetime life, IHostingEnvironment env, ILoggerFactory loggerFactory)
{
// other configure code here
life.ApplicationStopping.Register(() =>
Debug.WriteLine(">>Stopping"));
life.ApplicationStopped.Register(() =>
Debug.WriteLine(">>Stopped"));
}
NuGetの最新の更新がすべて含まれているアプリケーションがあり、IISExpressでApplicationStoppedとApplicationStoppingがトリガーされていないことを確認できます。 ApplicationStartedは問題なく動作しているようです。
私の開発環境でアプリケーションを直接呼び出すと、すべて問題ないことがわかりました。
この記事 方法を説明します。
ドロップダウンボックスからアプリを選択するだけです。
これはIIS Expressを使用することと同じではありませんが、問題を解決するのに役立つ可能性があります。
ほぼ忘れて、呼び出すには入力する必要があります Ctrl+C アプリの起動時に表示されるコマンドウィンドウで。