web-dev-qa-db-ja.com

IISExpressでApplicationStoppingイベントをトリガーするASP.NetCoreシャットダウンを取得する

これについては以前に質問があり、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"));
    }
26

NuGetの最新の更新がすべて含まれているアプリケーションがあり、IISExpressでApplicationStoppedとApplicationStoppingがトリガーされていないことを確認できます。 ApplicationStartedは問題なく動作しているようです。

私の開発環境でアプリケーションを直接呼び出すと、すべて問題ないことがわかりました。

この記事 方法を説明します。

ドロップダウンボックスからアプリを選択するだけです。

example

これはIIS Expressを使用することと同じではありませんが、問題を解決するのに役立つ可能性があります。

ほぼ忘れて、呼び出すには入力する必要があります Ctrl+C アプリの起動時に表示されるコマンドウィンドウで。

5
fj42