2013-02-13 4 views
7

Application_End()은 응용 프로그램 풀이 중지되었을 때 호출됩니다. 이는 자동 풀 재생 또는 응용 프로그램이 제공되는 폴더의 변경을 포함하여 여러 가지 이유로 발생할 수 있습니다.Application_End()가 호출 된 이유는 프로그래밍 방식으로 어떻게 찾을 수 있습니까?

는 호출 스택 것은 일반적으로 다음과 같습니다 : 완전히 쓸모

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() 

합니다.

프로그래밍 방식으로 호출 된 이유를 어떻게 찾을 수 있습니까?

답변

17

응용 프로그램이 종료되는 이유를 나타내는 System.Web.Hosting.HostingEnvironment.ShutdownReason 속성이 있습니다. 그 값은 Application_End()에서 검색 할 수 있습니다.

+0

답장을 보내 주셔서 감사합니다. 정말 도움이되었습니다. Application_End()를 트리거 한 시작할 때 응용 프로그램의/bin 디렉토리에있는 파일을 수정 한 것 같습니다. – Thomas