aspnix http://www.aspnix.comの共有ホスティング プラットフォームでホストされている非常に単純な mvc 2 アプリケーションがあります。
ユーザーがサイトのナビゲーション中に認証を失い (私は標準のメンバーシップ プロバイダーを使用しています)、ログイン ページにリダイレクトされることがあります。いくつかの調査の後、アプリケーションの再起動によりセッションが失われたのではないかと疑い始めたので、アプリケーションのシャットダウンと再起動を追跡するために、ヘルス モニタリング サービスをインストールして構成することにしました。
アプリケーションへのいくつかの要求の後、ヘルス モニタリング ログに次のエントリが表示されるようになりました。
Event code: 1002 Event message: Application is shutting down. Reason: Hosting environment is shutting down. Event time: 12/8/2010 8:16:33 AM Event time (UTC): 12/8/2010 3:16:33 PM Event ID: d92fbba0487b4bab97bd7eff4b0083bb Event sequence: 38 Event occurrence: 1 Event detail code: 50002 Application information: Application domain: /REMOVED FOR PRIVACY! Trust level: Full Application Virtual Path: / Application Path: C:\REMOVED FOR PRIVACY! Machine name: REMOVED FOR PRIVACY! Process information: Process ID: 12516 Process name: w3wp.exe Account name: REMOVED FOR PRIVACY!
その後、アプリケーションを再起動します。
次に aspnix サポートに連絡すると、サーバーは正常で、同じサーバー上で他の大きなサイトが問題なく実行されており、おそらく私のアプリケーションの問題であるとのことです。
そのため、アプリケーションで調査を開始しましたが、問題は見つかりませんでした。
また、png画像などの静的リソースを要求したときにもシャットダウンが表示されることにも気付きました!
いくつかの調査の後、Scott Gu ブログで次の興味深い投稿を見つけました 。
したがって、スコットが教えるように global.asax の Application_End イベントをインターセプトし、アプリケーションがシャットダウンするたびにメールを送信します...そして内容は毎回同じです:
_shutDownMessage=HostingEnvironment initiated shutdown
HostingEnvironment caused shutdown
_shutDownStack= at System.Environment.GetStackTrace(Exception e, Boolean needFileInfo)
at System.Environment.get_StackTrace()
at System.Web.Hosting.HostingEnvironment.InitiateShutdownInternal()
at System.Web.Hosting.HostingEnvironment.InitiateShutdownWithoutDemand()
at System.Web.Hosting.PipelineRuntime.StopProcessing()
再起動の原因は、web.config の変更、bin または aspx ファイルの変更、メモリの過剰使用などである可能性があることを知っています。また、アプリケーションの他の部分は非常にシンプルで、標準のメンバーシップ プロバイダーといくつかの linq to sql クエリのみを使用しています...
また、結果のないすべての未処理の例外に対して Application_Error イベントをサブスクライブしました。
何か案が?