5

次の場合に Apllication_end が呼び出されることを私は知っています:

  1. 実行中のアプリケーションの構成ファイルを編集します。
  2. bin ディレクトリの dll を変更します。
  3. IIS を停止 (または再起動) します。
  4. プロセスのリサイクルは、IIS6 アプリケーション プールで、または aspnet ワーカー プロセスを使用してオンにします。

しかし、私の質問は、それが呼び出されない場合は何ですか?
手動で w3wp プロセスを終了した場合、またはサーバーが残酷にシャットダウンした場合、呼び出されないことはわかっています。

他のシナリオはありますか?

ありがとう!

4

2 に答える 2

2

残忍なシャットダウンは、リクエストの実行に必要な AppDomain の作成に失敗した OutOfMemoryException が原因であると思われます。このシナリオでは、Application_end は呼び出されません。

イベントの種類: エラー
イベント ソース: ASP.NET 2.0.50727.0
イベント カテゴリ: なし
イベント ID: 1334
日付: 2012 年 4 月 22 日
時刻: 11:23:13 AM
ユーザー: N/A
コンピューター: CCBSHAIS02
説明:
初期化に失敗しましたAppDomain:/LM/W3SVC/1/ルート/AgentWS

例外: System.SystemException

メッセージ: AppDomain を作成できませんでした。

スタック トレース: System.Web.Hosting.ApplicationManager.CreateAppDomainWithHostingEnvironment (文字列の appId、IApplicationHost appHost、HostingEnvironmentParameters、hostingParameters) で、System.Web.Hosting.ApplicationManager.CreateAppDomainWithHostingEnvironmentAndReportErrors (文字列の appId、IApplicationHost appHost、HostingEnvironmentParameters、hostingParameters) で

内部例外: System.OutOfMemoryException

メッセージ: タイプ 'System.OutOfMemoryException' の例外がスローされました。

スタックトレース: System.Web.Hosting.ApplicationManager.CreateAppDomainWithHostingEnvironment の System.AppDomain.CreateDomain (String FriendlyName、Evidence securityInfo、AppDomainSetup 情報) の System.AppDomain.nCreateDomain (String FriendlyName、AppDomainSetup setup、Evidence providedSecurityInfo、Evidence CreatorsSecurityInfo、IntPtr parentSecurityDescriptor) で(文字列 appId、IApplicationHost appHost、HostingEnvironmentParameters、hostingParameters)

IIS と AppDomains の詳細については、 http ://weblogs.asp.net/owscott/archive/2007/09/02/application-vs-appdomain.aspx を参照してください。

于 2012-04-29T12:27:49.017 に答える
2

あなたの質問への答えは基本的にあなたの質問にあります。Application_End は、Web サービスをホストしているプロセスが正常にシャットダウンするたびに呼び出されます。

これが発生するのは次の場合のみです。

  1. アクションにより、IIS がサービス プロセスを再起動しました (ファイルを変更すると、これが強制されます)。
  2. IIS サービスがシャットダウンされました
  3. プロセスリサイクル。

プロセスが突然終了した場合 (つまり、w3wp プロセスを強制終了した場合)、実行する機会がありません。

于 2012-04-24T15:22:28.380 に答える