2008-09-11 16 views
5

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

उत्तर

2

Render विधि को कॉल करना अभी भी बहुत आसान है। बस अपने पृष्ठ का एक उदाहरण बनाएं, को WebRequest ऑब्जेक्ट के साथ स्टब बनाएं, और पेज के Render विधि को कॉल करें। फिर आप परिणाम के साथ जो भी चाहते हैं उसे करने के लिए स्वतंत्र हैं।

वैकल्पिक रूप से, जो भी पेज आप स्थैतिक बनाना चाहते हैं उसे डाउनलोड और स्टोर करने के लिए थोड़ा curl या wget स्क्रिप्ट लिखें।

2

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

यदि आपको केवल प्रदर्शन कारणों से स्थिर HTML की आवश्यकता है, तो मेरी वरीयता एएसपी.Net आउटपुट कैशिंग का उपयोग करना होगा।

2

मुझे सलाह है कि आप इसे एक बहुत ही सरल तरीका करें और कोड में ऐसा न करें। यह आपके सीएमएस कोड को करने के लिए अनुमति देगा जो सीएमएस कोड करना चाहिए और इसे यथासंभव सरल रखेगा।

HTTrack जैसे उत्पाद का उपयोग करें। यह खुद को "वेबसाइट कॉपीियर" कहते हैं। यह एक साइट क्रॉल करता है और एचटीएमएल आउटपुट बनाता है। यह तेज और मुफ़्त है। आप इसे जो भी आवृत्ति मानते हैं उस पर आप इसे चला सकते हैं।

यह आपके सीएमएस डिज़ाइन और कार्यान्वयन से आपकी HTML आउटपुट आवश्यकताओं को डीक्यूप्ल करता है। यह जटिलता को कम करता है और आपको अपने सीएमएस कोड में विफलता बिंदुओं को पेश किए बिना HTML को आउटपुट करने में कुछ लचीलापन देता है।

1

@ कररास: मैं बाहरी उपकरण का उपयोग नहीं करना चाहूंगा, क्योंकि मैं चाहता हूं कि HTML पेज प्रोग्रामेटिक रूप से बनाए जाएं और मैन्युअल रूप से नहीं।

@jttraino: मेरे पास समय अंतराल नहीं है जिसमें साइट को आउटपुट करने की आवश्यकता है- यूटपुट तब होता है जब उपयोगकर्ता कोई नई साइट बनाता है।

@ फ्रैंक क्रूगर: मैं वास्तव में समझ नहीं पा रहा हूं कि WebContext और WebRequest का उपयोग करके मेरे पृष्ठ का उदाहरण कैसे बनाएं।

मैंने searchdotnet में "wget" की खोज की, और a post को वेब क्लाइंट नामक एक .net क्लास के बारे में मिला। ऐसा लगता है कि मैं क्या चाहता हूं अगर मैं डाउनलोडस्ट्रिंग() विधि का उपयोग करता हूं - एक विशिष्ट यूआरएल से एक स्ट्रिंग प्राप्त करता है। समस्या यह है कि जब हमारे सीएमएस को लॉग इन करने की आवश्यकता होती है, जब विधि पृष्ठ तक पहुंचने का प्रयास करती है तो इसे लॉगिन पेज पर फेंक दिया जाता है, और इसलिए login.aspx HTML लौटाता है ...

कोई विचार है कि मैं कैसे यहां से जारी रह सकते हैं?

4

मुझे लगता है कि Server.Ecxcute विधि का उपयोग कर मेरी समस्या के समाधान का समाधान मिला है।

TextWriter textWriter = new StringWriter(); 
Server.Execute("myOtherPage.aspx", textWriter); 

तब मैं textWriter पर कुछ maniulatons करते हैं, और एक HTML फ़ाइल में डालें:

मैं एक article कि इसका इस्तेमाल demonstared पाया। और voila! यह काम करता हैं!

+0

मुझे लेख में बहुत कुछ मिला है। मुझे यह आसान लगता है http://msdn.microsoft.com/en-us/library/fb04e8f7.aspx –