4

IRegisteredObjectを使用してアプリケーションのシャットダウンを検出する方法について、いくつか質問がありました。ただし、すべてのアクティブなリクエストが完了するまで、IRegisteredObject.Stop は呼び出されません。

これは、実行時間の長いリクエスト (プッシュレット、ロング ポーリング、Web ソケット) の場合に当てはまります。つまり、これらのリクエストによってアプリケーション プールのリサイクルが無期限に停止される可能性があります。

アプリケーションのシャットダウンが保留中であることを長時間実行されているリクエストから検出する方法はありますか?

IRegisteredObject を使用するか、HostingEnvironment.ShutdownReason をポーリングすることは既にテスト済みです。アクティブなリクエストが完了するまで、どちらも機能しません。

4

1 に答える 1

4

Katana/Owin プロジェクトは、内部の System.Web.Hosting.UnsafeIISMethods.MgdHasConfigChanged メソッドにアクセスしてシャットダウンを検出し、長時間実行される要求がこの状態を検出できるようにします。

サンプル実装については、 ShutdownDectectorおよびUnsafeIISMethodsを参照してください。

于 2013-02-27T17:22:36.063 に答える