2011-07-14 12 views
1

私はASP.NETアプリケーションといくつかの参照データをキャッシュしています。キャッシュを作成するコードは、global.asaxのapplication_startイベントで呼び出されます。私の問題は、application_startイベントが複数回呼び出され、アプリケーションのアクセスが遅くなることです。問題をテストするために、私はアプリケーションを再インストールしました。 application_startイベントは、アプリケーションに最初にアクセスしたときに(期待どおり)起動され、変更を加えていないのに約1時間後に再度発生しました。アプリケーションのbinファイルでファイルシステムを変更していないため、アプリケーションプールがデフォルトのリサイクル設定(1740分)に設定されているため、なぜイベントが呼び出されているのかわかりません。ASP.NET application_startイベントが発生しました

おかげ

+0

をあなたのglobal.asaxで「Application_End」を追加し、ブレークポイントを設定しようとしたことがありますか?到達したら、スタックトレースを取得して、ここに投稿することができます。 – BumbleB2na

答えて

4

私が(20分デフォルト)アイドルタイムアウト設定をチェックします。サイトが20分間何の要求も処理しない場合、ワーカープロセスはシャットダウンします。したがって、次回以降にアプリケーションを実行すると、別のApp Startイベントが発生します。

+0

あなたは正しいです。私は、アイドルタイムアウトをゼロに設定してアプリケーションのプールの設定で、それは問題を解決した – klone

1

あなたは、Global.asax.csのApplication_End方法では、再起動の理由をログに記録可能性があり、私はこのコードを使用しています:

protected void Application_End(object sender, EventArgs e) 
{ 
    HttpRuntime runtime = (HttpRuntime)typeof(System.Web.HttpRuntime).InvokeMember("_theRuntime", BindingFlags.NonPublic | BindingFlags.Static | BindingFlags.GetField, null, null, null); 

    string shutDownMessage = ""; 

    if (runtime != null) 
    { 
    shutDownMessage = Environment.NewLine + "Shutdown: " + 
         (string)runtime.GetType().InvokeMember("_shutDownMessage", BindingFlags.NonPublic | BindingFlags.Instance | BindingFlags.GetField, null, runtime, null) + 
         Environment.NewLine + "Stack: " + Environment.NewLine + 
         (string)runtime.GetType().InvokeMember("_shutDownStack", BindingFlags.NonPublic | BindingFlags.Instance | BindingFlags.GetField, null, runtime, null); 
    } 
} 
関連する問題