4

私のWebアプリケーションApplication.Endでは、何らかの理由ですべてのリクエストの後に呼び出され、アプリケーションが再起動されます。ブレークポイントを設定するとApplicaion_End、有用なスタック トレースが得られません。さらに、イベント ビューアにはエントリがありません。MSDN によると、次の場合にアプリケーションが再起動する可能性があります。

  • アプリケーションの Bin フォルダーからのアセンブリの追加、変更、または削除。
  • App_GlobalResources または App_LocalResources フォルダーからのローカリゼーション リソースの追加、変更、または削除。
  • アプリケーションの Global.asax ファイルを追加、変更、または削除します。
  • App_Code ディレクトリのソース コード ファイルを追加、変更、または削除します。
  • プロファイル構成の追加、変更、または削除。
  • App_WebReferences ディレクトリでの Web サービス参照の追加、変更、または削除。
  • アプリケーションの Web.config ファイルの追加、変更、または削除。

私のコードは、アプリケーションの再起動をトリガーするファイルを変更すると思います。アプリケーションの再起動の正確な原因を特定する方法はありますか?

編集:コードをステップ実行し、エクスプローラーでタイムスタンプを確認することで、問題を解決しました。アプリケーションの起動時に、アクセス データベースから値を読み取っているため、.ldb ファイルが作成および削除されます。ただし、この質問にはまだ答えがありません。アプリケーションを再起動させるようなイベントを記録するログはありますか?

4

1 に答える 1

5

Tess Ferrandez は、App Domain のリサイクルの理由を判断する方法について、優れたブログ投稿を書きました。Tess は、再起動イベントをログに記録する方法について次のように述べています。

アプリドメインの再起動の原因を特定するにはどうすればよいですか? ASP.NET 2.0 では、組み込みの状態監視イベントを使用して、アプリケーションの再起動を再起動の理由と共にログに記録できます。これを行うには、C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\CONFIG ディレクトリのマスター web.config ファイルを変更し、次のセクションを追加します。

<healthMonitoring>
  <rules>
    <add name="Application Lifetime Events Default" 
         eventName="Application Lifetime Events"
         provider="EventLogProvider" profile="Default" minInstances="1"
         maxLimit="Infinite" minInterval="00:01:00" custom="" />

IIS6 のログを有効にするには、次を使用できます。

cscript adsutil.vbs Set w3svc/AppPools/DefaultAppPool/LogEventOnRecycle 255

IIS7 の場合は、IIS マネージャー - アプリケーション プール - 詳細設定から制御できます。

于 2011-12-30T10:26:26.997 に答える