2008-12-01 16 views
18

वर्चुअलपाथप्रोवाइडर को अनुकूलित करने के अभ्यास के दौरान, मैंने पाया कि कस्टम वर्चुअलपाथप्रोवाइडर को ग्लोबल.एक्सएक्स में या एमएसडीएन http://msdn.microsoft.com/en-us/library/system.web.hosting.virtualpathprovider.aspx के अनुसार ऐप प्रारंभिक विधि में पंजीकृत किया जा सकता है। हालांकि, एमएसडीएन स्पष्ट रूप से विधि AppInitialize विधि का वर्णन नहीं करता है।जब ऐप शुरू करने की विधि एएसपी.नेट में लागू की जाती है?

क्या App_code फ़ोल्डर में कोई स्थिर AppInitialize विधि स्वचालित रूप से एएसपी.NET रनटाइम द्वारा शुरू की जाएगी?

उत्तर

31

जबकि वहाँ है विधि AppInitialize() के बारे में कीमती थोड़ा प्रलेखन, आप अपने इस धारणा में सही है कि आपके App_Code फ़ोल्डर में किसी भी वर्ग है कि इस तरह एक विधि हस्ताक्षर है कर रहे हैं:

public static void AppInitialize() 

द्वारा सक्रिय किया जाएगा जब Asp.Net एप्लिकेशन शुरू होता है। याद रखें कि App_Code Asp.Net के लिए एक विशेष फ़ोल्डर है और वहां के अंदर सबकुछ थोड़ा अलग व्यवहार किया जाता है। App_Code फ़ोल्डर के सभी छोटे quirks (उपरोक्त की तरह) पर प्रलेखन ढूँढना शुभकामनाएँ।

AppInitialize विधि परिभाषित किया गया है:

लेकिन याद करने के लिए एक और बात है कि केवल एक वर्ग विधि AppInitialize() के लिए एक हस्ताक्षर हो सकते हैं या फिर आप रनटाइम पर एक संकलक त्रुटि इस के समान हो जाएगा है 'App_Code.SomeClassOne' और 'App_Code.SomeClassTwo' दोनों में।

इसलिए जब यह पूरी तरह से वैध है:

public class SomeClassOne 
{ 
    public static void AppInitialize() 
    { 
     HostingEnvironment.Cache["InitializationTimeOne"] = DateTime.Now; 
    } 
} 

इस संकलक त्रुटि मैं उपर्युक्त उत्पन्न करेगा:

public class SomeClassOne 
{ 
    public static void AppInitialize() 
    { 
     HostingEnvironment.Cache["InitializationTimeOne"] = DateTime.Now; 
    } 
} 

public class SomeClassTwo 
{ 
    public static void AppInitialize() 
    { 
     HostingEnvironment.Cache["InitializationTimeTwo"] = DateTime.Now; 
    } 
} 

मुझे आशा है कि यह बातें आप के लिए थोड़ा साफ करता है :)

+0

यह बहुत उपयोगी है। App_Code विशेष व्यवहार के अन्य उदाहरण कहां से प्राप्त करने का कोई विचार है? –

+2

मैंने कुछ समय के लिए डब्लूसीएफ वेबसाइट सेवा में काम किया था, और अचानक यह रहस्यमय तरीके से काम करना बंद कर दिया। यदि मैं विजुअल स्टूडियो में वेबसाइट सेवा चलाता हूं तो प्रारंभिकरण होता है, लेकिन यदि मैं इसे आईआईएस पर तैनात करता हूं तो कोई प्रारंभिक प्रतीत नहीं होता है। मैं कसम खा सकता था कि यह काम कर रहा था, और अब यह अचानक नहीं है। कोई विचार? – Farinha

+0

समस्या मिली। मैंने .cs फ़ाइल पर "बिल्ड एक्शन" को बदल दिया जिसमें "सामग्री" से "कंपाइल" में प्रारंभिकता शामिल थी, जिसमें "App_Code" फ़ोल्डर को वेबसाइट सेवा प्रकाशित फ़ोल्डर में कॉपी नहीं किया गया था। खैर, यह नहीं किया जा सकता है ... – Farinha

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