2009-09-08 16 views
10

क्या ग्लोबल.एएसएक्स सी द्वारा विस्तारित एचटीपी एप्लीकेशन क्लास आवेदन के जीवनकाल के लिए मौजूद है?एएसपी.नेट एचटीपी एप्लीकेशन लाइफसाइक्ल

किस बिंदु पर उदाहरण बनाया/नष्ट किया जा सकता है?

मुझे एप्लिकेशन_स्टार्ट फायरिंग दो बार अनुभव हो रहा है, ऐसा लगता है कि यह ऐप पूल रीसाइक्लिंग के साथ कुछ करना है और इस प्रक्रिया के बावजूद अनुरोध करना है। मैंने इसे काफी डीबग नहीं किया है और इस समय गहराई से ऐसा करने के लिए मेरे पास समय नहीं है। तो, उपर्युक्त प्रश्न के संबंध में, निम्नलिखित एक सुरक्षित समाधान है?

public class MvcApplication : System.Web.HttpApplication 
{ 
    public static object syncLock = new object(); 
    public static bool applicationBooted; 

    protected void Application_Start() 
    { 
     if(!applicationBooted) 
     lock (syncLock) 
     if(!applicationBooted) 
     { 
      // bootstrap here 
      applicationBooted = true; 
     } 
    } 
} 
+0

क्या आपको पता चला कि आपकी समस्या क्या थी? मेरे पास बहुत ही समान समस्या है। –

+0

@Piotr मुझे लगता है कि यह एक लाल हेरिंग था, मुझे लगता है कि मेरे स्टार्टअप कोड में कहीं और थ्रेडिंग समस्या थी और दो शुरुआती अनुरोध भेजकर यह मजाकिया भेज रहा था। हालांकि याद नहीं है, क्षमा करें –

उत्तर

4

MSDN ऑनलाइन पृष्ठ से,

सभी मुख्य आवेदन वस्तुओं प्रारंभ कर दिया गया है के बाद, आवेदन HttpApplication वर्ग का एक उदाहरण बनाने के द्वारा शुरू कर दिया है। आवेदन एक Global.asax फ़ाइल है, तो ASP.NET बजाय Global.asax वर्ग HttpApplication वर्ग से ली गई है और आवेदन का प्रतिनिधित्व करने के व्युत्पन्न वर्ग का उपयोग करता है की एक आवृत्ति पैदा करता है।

ASP.NET Application Life Cycle Overview

+4

यह समझा नहीं जाता है कि यह क्यों बनाया जा रहा है या सिर्फ दो बार बुलाया गया ईवेंट। –

6

आप अपने लॉग में दो बार घटना को देख रहे हैं, तो जांचें कि अनुप्रयोग पूल एक भी कार्यकर्ता प्रक्रिया अंडे देने के लिए निर्धारित है। प्रत्येक कार्यकर्ता प्रक्रिया HttpAppication का अपना उदाहरण बनायेगी।

+0

क्या ऐप_स्टार्ट अभी भी केवल एक बार निकाल दिया जाना चाहिए? क्या मैं नहीं चाहता> 1 कार्यकर्ता प्रक्रियाएं? –

+1

जब आप> 1 कार्यकर्ता प्रक्रिया के साथ चलाने के लिए ऐप पूल कॉन्फ़िगर करते हैं, तो आप वेब गार्डन मोड में चल रहे हैं। प्रत्येक प्रक्रिया दूसरों से अलग होती है और पाइपलाइन का अपना उदाहरण चलाती है। –

+0

क्या इसका मतलब यह है कि आपको एक ही आईआईएस साइट के लिए कई w3wp.exe मिलते हैं? –

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