2012-08-15 13 views
19

मैंने डिफॉल्ट का उपयोग करके कई बार एक वेब साइट बनाई है "इस प्रीकंपिल्ड साइट को अपडेट करने योग्य होने की अनुमति दें" हालांकि सबसे हालिया संकलन पर वेबसाइट बहुत टूटी हुई थी। .dll के साथ खेलने के बाद (बिन में उन्हें हटाकर और बदलना) मैंने देखा कि वेबसाइट के कुछ हिस्सों फिर से काम करना शुरू कर देते हैं, लेकिन अगर मैंने साइट पर सभी मूल .dll को तोड़ दिया था।प्रीकंपिल्ड विजुअल स्टूडियो वेब पेज को अपडेट करने योग्य होने की अनुमति देने के बीच क्या अंतर है और नहीं?

मैं कई अजाक्स वेब एक्सटेंशन के साथ एएसपीएक्स पेज का उपयोग कर रहा हूं। ये हाल ही में जोड़े गए थे और समस्या का स्रोत हो सकता है। मैंने "इस प्रीकंपील्ड साइट को अपडेट करने योग्य होने की अनुमति दें" को अनचेक किया और इसमें बिन को सभी प्रकार की अतिरिक्त संकलित कोड फाइलें शामिल की गईं, और वेबसाइट के साथ सभी समस्याएं चली गईं ... यहाँ क्या चल रहा है? क्या अंतर था?

साइट को अपडेट करने के तरीके में कोई फर्क नहीं पड़ता है, बस हर बार विजुअल स्टूडियो से सीधे प्रकाशित होता है।

किसी भी अंतर्दृष्टि की सराहना की जाएगी।

उत्तर

16

"इस प्रीकंपील्ड साइट को अपडेट करने योग्य होने की अनुमति दें" को अनचेक करना। एएसपीएक्स पेज, न केवल कोड फाइलें (.VB/.CS)। इसे चेक करने से आपको कुछ बदलाव करने की अनुमति मिलती है .एक्सएक्स फाइलों को बिना किसी संकलन के तैनात किए जाने के बाद (पूर्व = नियंत्रण की स्थिति को स्थानांतरित करें या कुछ अतिरिक्त HTML मार्कअप जोड़ें)।

तैनाती के मुद्दों के बारे में अपना विवरण पढ़ने के बाद ऐसा लगता है कि त्रुटियां इसलिए हैं क्योंकि आईआईएस को ऐप पूल रीफ्रेश की आवश्यकता है। कम अंत VPS पर, कभी-कभी यह उस लक्जरी होने पर उछाल (पुनरारंभ) करने के लिए समझ में आता है।

साइट प्रीकंपिलेशन पर अधिक जानकारी के लिए निम्नलिखित एमएसडीएन लेख पढ़ें।

http://msdn.microsoft.com/en-us/library/399f057w(v=vs.80).aspx

http://msdn.microsoft.com/en-us/library/ms247286(v=vs.80).aspx

5

मैं अपने खुद के सवाल, क्या NoAlias ​​कहा आधारित के लिए एक जवाब है। मैं दो लिंक पढ़ सकते हैं और निम्नलिखित पाया:

तैनाती के लिए Precompiling केवल
जब आप केवल तैनाती के लिए precompile, संकलक विधानसभाओं लगभग सभी ASP.NET स्रोत फ़ाइलें है कि सामान्य रूप में संकलित किया गया है से पैदा करता है रन टाइम इसमें पृष्ठों, .cs और .vb क्लास फ़ाइलों, अन्य कोड फ़ाइलों, और संसाधन फ़ाइलों में प्रोग्राम कोड शामिल है। संकलक आउटपुट से सभी स्रोत और मार्कअप को हटा देता है। परिणामी लेआउट में, संकलित फाइलें .aspx फ़ाइलों के प्रत्येक (एक्सटेंशन .compiled के साथ) के लिए जेनरेट की जाती हैं जिसमें पॉइंटर्स उस पृष्ठ के लिए उपयुक्त असेंबली में होते हैं। पृष्ठों के लेआउट समेत वेबसाइट को बदलने के लिए, आपको मूल फ़ाइलों को बदलना होगा, साइट को पुन: संकलित करना होगा, और लेआउट को फिर से तैनात करना होगा। एकमात्र अपवाद साइट कॉन्फ़िगरेशन है; आप साइट को पुन: संकलित किए बिना उत्पादन सर्वर पर Web.config फ़ाइल में परिवर्तन कर सकते हैं। यह विकल्प आपके पृष्ठों और स्टार्टअप पर सर्वोत्तम प्रदर्शन के लिए सबसे बड़ी सुरक्षा प्रदान करता है।

तैनाती के लिए

Precompiling और अद्यतन
जब आप तैनाती और अद्यतन के लिए precompile, संकलक ( एकल फ़ाइल पन्नों में पेज कोड को छोड़कर) सभी स्रोत कोड से विधानसभाओं का उत्पादन और अन्य फ़ाइलें जो सामान्य रूप से विधानसभाओं का उत्पादन से , जैसे कि संसाधन फाइलें। कंपाइलर .aspx फ़ाइलों को को एक ही फाइल में परिवर्तित करता है जो संकलित कोड-पीछे मॉडल का उपयोग करता है और उन्हें लेआउट में प्रतिलिपि बनाता है। यह विकल्प आपको संकलित करने के बाद आपकी साइट में एएसपी.NET वेब पृष्ठों में सीमित परिवर्तन करने में सक्षम बनाता है। उदाहरण के लिए, आप नियंत्रण, रंग, फोंट, और पृष्ठों के अन्य उपस्थिति पहलुओं की व्यवस्था बदल सकते हैं। आप के रूप में नियंत्रण भी जोड़ सकते हैं क्योंकि उन्हें इवेंट हैंडलर या अन्य कोड की आवश्यकता नहीं होती है। जब साइट पहली बार चलता है, तो ASP.NET मार्कअप से आउटपुट बनाने के लिए क्रम में आगे संकलन करता है। नोट

एक प्रीकंपिल्ड अपडेट करने योग्य साइट एकाधिक पृष्ठों को समान कोडफ़ाइल क्लास का संदर्भ नहीं देती है।

मैं हाल ही में साइट में परिवर्तन कर दिया था 2 aspx पृष्ठों है कि एक ही CodeFile (पृष्ठभूमि में एक ही VB कोड) संदर्भित प्रत्येक पृष्ठ थोड़ा अलग एचटीएमएल गुण था, लेकिन जरूरत समान CodeFiles है, के लिए बहुत शामिल करने के लिए मेरा दूसरा एएसपी पेज मैंने ऑटो-जेनरेटेड वीबी कोड फ़ाइल हटा दी और फिर HTML में एक अलग कोडफाइल का संदर्भ दिया।

जैसा ऊपर बताया गया है, पूर्व-निर्धारित अद्यतन करने योग्य साइटें एकाधिक पृष्ठों को एक ही कोड-फ़ाइल क्लास को संदर्भित करने की अनुमति नहीं देती हैं। यही कारण है कि मेरे कुछ पेज काम नहीं कर रहे थे।

इस बिंदु से, मुझे डिफ़ॉल्ट चेकबॉक्स का उपयोग करने से बचने की आवश्यकता है "इस प्रीकंपील्ड साइट को अद्यतन करने योग्य होने दें"; यह मेरे एकाधिक पृष्ठों के संदर्भ में वीबी कोडफाइल का उपयोग करने के लिए मेरी वेबसाइट के लिए अनचेक रहना चाहिए।

निष्कर्ष: एक ही कोडफाइल का संदर्भ देने वाले एकाधिक एएसपीएक्स पृष्ठों को सही ढंग से चलाने के लिए प्रीकंपल किया जाना चाहिए। इसका मतलब यह है कि साइट को फिर से डिप्लोयिंग किए बिना इसमें कोई भी बदलाव नहीं हो पाएगा।

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

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