1

Windows Azure にデプロイする ASP.NET アプリケーションでは、できるだけ多くの有用なデータをログに記録したいと考えています。方法がありますApplication_End()

protected void Application_End(object sender, EventArgs e)
{
}

senderこれは、 beingSystem.Web.HttpApplicationFactoryebeing justで呼び出されSystem.EventArgsます。このようなパラメーターを使用してできることは、そのタイプをログに記録することだけですが、あまり役に立ちません。

これらのパラメータから有用なデータを取得できますか? Application_End()他の - より便利な - 実際の型を持つパラメータで呼び出される場合はありますか?

4

1 に答える 1

1

IIS がclass HttpRuntime含まれており、ソースをダウンロードできます。注意深く分析すると、実際にイベント パラメータは常に同じであり、有用な情報を伝えていないことがわかります。イベントのコール スタックも役に立たない - それは常に

my Application_End(Object sender, EventArgs e)
at System.RuntimeMethodHandle._InvokeMethodFast(IRuntimeMethodInfo method, Object target, Object[] arguments, SignatureStruct& sig, MethodAttributes methodAttributes, RuntimeType typeOwner)
at System.Reflection.RuntimeMethodInfo.Invoke(Object obj, BindingFlags invokeAttr, Binder binder, Object[] parameters, CultureInfo culture, Boolean skipVisibilityChecks)
at System.Reflection.RuntimeMethodInfo.Invoke(Object obj, BindingFlags invokeAttr, Binder binder, Object[] parameters, CultureInfo culture)
at System.Reflection.MethodBase.Invoke(Object obj, Object[] parameters)
at System.Web.HttpApplication.InvokeMethodWithAssert(MethodInfo method, Int32 paramCount, Object eventSource, EventArgs eventArgs)
at System.Web.HttpApplication.ProcessSpecialRequest(HttpContext context, MethodInfo method, Int32 paramCount, Object eventSource, EventArgs eventArgs, HttpSessionState session)
at System.Web.HttpApplicationFactory.Dispose()
at System.Web.HttpRuntime.Dispose()
at System.Web.HttpRuntime.ReleaseResourcesAndUnloadAppDomain(Object state)
at System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state, Boolean ignoreSyncCtx)
at System.Threading.QueueUserWorkItemCallback.System.Threading.IThreadPoolWorkItem.ExecuteWorkItem()
at System.Threading.ThreadPoolWorkQueue.Dispatch()
at System.Threading._ThreadPoolWaitCallback.PerformWaitCallback()

しかし...System.Web.Hosting.HostingEnvironment.ShutdownReason内部から取得でき、アプリケーションのシャットダウンが開始されるときにApplication_End()設定されるものがあります。HttpRuntime

したがって、「興味深いデータ」はSystem.Web.Hosting.HostingEnvironment.ShutdownReason.

この密接に関連する質問も参照してください

于 2013-02-14T06:50:02.053 に答える