2013-02-13 16 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() को ट्रिगर किया था। – Thomas

संबंधित मुद्दे

 संबंधित मुद्दे