2010-07-28 11 views
6

मैं एक ASP.NET मास्टर पृष्ठ एक # शामिल फ़ाइल का संदर्भ देता है जो इस प्रकार है पर कैशिंग कर रहे हैं:कैसे # शामिल ताज़ा करने के लिए की गई फ़ाइलों को IIS7/ASP.NET

<!--#include virtual="/includes/scripts.inc"--> 

मैं फ़ाइल को संशोधित किया है/भी शामिल है /scripts.inc लेकिन परिवर्तन पृष्ठों में दिखाई नहीं देते हैं। क्या करने की आवश्यकता है ताकि संशोधनों परिलक्षित किया जा सके?

  • सर्वर
  • पुनरारंभ आईआईएस
  • web.config को संशोधित करने
  • काफी कुछ भी (कोई असर दिखाई दे रहा है) है कि कारण बनता है को पुन: प्रारंभ:

    मैं निम्नलिखित बचने की जरूरत है

कोई अन्य विकल्प पुनरारंभ करने के लिए ऐप डोमेन? क्या ऐसी कोई सेटिंग है जो आईआईएस कैश को कितनी देर तक फाइलों को शामिल करती है?

+1

कोड किस तरह आप उन में रहते हो भी शामिल है? मुझे नहीं लगता कि आपको उन पुराने स्कूल प्रकारों का उपयोग करना चाहिए जो एएसपी.नेट में शामिल हैं। – Jeroen

+0

मुझे पता था कि कोई उससे पूछेगा। बस मान लें कि उन्हें एप्लिकेशन के लिए जरूरी है :) – frankadelic

+0

मेरा सुझाव है कि इसमें शामिल शैली से बचें - यह एएसपी से आ रहा है, शायद आसान माइग्रेशन के लिए, लेकिन यह एएसपीनेट द्वारा इतना सही नहीं है। आपके पृष्ठों को यह समझ में नहीं आया कि उन्हें अपडेट की आवश्यकता है, इसलिए पहले स्थान पर संकलित न करें और रहें। – Aristos

उत्तर

4

सबसे पहले, जैसा कि आप शायद जानते हैं, आपको ASP.NET के साथ # अंतर्निहित निर्देश का उपयोग नहीं करना चाहिए। सही समाधान उपयोगकर्ता नियंत्रण या सर्वर नियंत्रण का उपयोग करना है। हालांकि, क्या आप चाहते हैं एक पृष्ठ (यानी कोई सर्वर-साइड कोड) में HTML और Javascript का एक समूह इंजेक्षन करने के लिए है, तो आप Response.WriteFile इस्तेमाल कर सकते हैं:

<%@ Page Language="vb"%> 
<html> 
<body> 
    <% Response.WriteFile("scripts.inc") %> 
</body> 
</html> 
+1

इनलाइन स्क्रिप्ट नहीं कर सकता। पेज संकलित मोड = "कभी नहीं" चिह्नित हैं। – frankadelic

+0

@ फ्रैंकडेलिक - लेकिन यह एकमात्र कारण नहीं है जिसे वे संकलन मोड के साथ चिह्नित करते हैं = कभी भी इस रीफ्रेश समस्या को हल करने के लिए फ़ाइलों को शामिल करने का प्रयास करने के लिए? – Thomas

+0

नहीं, यह वास्तव में एक डिजाइन निर्णय है जिसे हमने इस एप्लिकेशन में बनाया था। एएसपीएक्स फाइलें बैक-एंड सिस्टम से प्रकाशित की जाती हैं, और हमें संकलन रोकने के लिए संकलन मोड = "कभी नहीं" का उपयोग करना पड़ता है ... क्योंकि इससे ऐप डोमेन को पुनरारंभ करने का कारण बनता है, HttpRuntime.Cache को फ़्लश करने के लिए, आदि ... http://dotnetslackers.com/ASP_NET/re-666_ASP_NET_2_0_No_Compile_Pages.aspx – frankadelic

3

doens't के साथ कोई लेना देना कैशिंग, या तो सर्वर-साइड या क्लाइंट-साइड। यह एक संकलन मुद्दा है। # शामिल होने पर ASP.NET में संशोधन के रूप में शामिल नहीं किया गया है, इसलिए पृष्ठ का पुनर्निर्माण नहीं किया गया है।

इस KB मदद करनी चाहिए: http://support.microsoft.com/kb/306575

+1

इतना यकीन नहीं है कि इसे संकलन के साथ करना है। उदाहरण: यदि मैं हेडर संकलन मोड = "कभी नहीं" के साथ एक .aspx पृष्ठ बनाता हूं, तो एएसपी.NET पृष्ठ को अपडेट करेगा यदि मैं एएसपीएक्स के भीतर HTML को संशोधित करता हूं ... कोई संकलन भी नहीं हो रहा है, फिर भी पृष्ठ अपडेट किया गया है। .... वैसे भी, मेरे प्रश्न का सारांश यह है कि जब मैं ब्राउज़र में पृष्ठ खोलता हूं तो परिवर्तन कैसे प्राप्त होते हैं ... चाहे वह कैशिंग, संकलन या कुछ अन्य कारक हो। – frankadelic

+0

@ फ्रैंकडेलिक: ऊपर अपडेट किया गया। – Stan

2

अतः जब तक यह वास्तव में स्थिर शामिल है के रूप में, बस सी # कोड में फ़ाइल लोड और यह अपने आप इंजेक्षन। फिर इसे फ़ाइल निर्भरता के साथ कैश में रखें और फ़ाइल को बदलने के बाद ऑब्जेक्ट शून्य हो जाएगा जो आपको इसे फिर से पढ़ने के लिए ध्वज प्रदान करेगा।

यदि यह वास्तव में स्थिर नहीं है (स्थिर == कोई एएसपी.NET नियंत्रण नहीं है - यह अन्यथा बहुत ही परिवर्तनीय हो सकता है - जैसे कि डीबी से एक स्पू या बहुत उपयोगकर्ता के लिए अलग-अलग सीएसएस) तो आप पृष्ठ संकलन के साथ गड़बड़ करना चाहते हैं और तब तक नहीं होने तक जब तक आप अपना टेम्पलेट प्रोसेसर या कुछ नहीं लिखते :-)

1

यदि आप फ़ाइलों को कैशिंग कर रहे हैं जिन्हें बदलने की आवश्यकता हो सकती है, तो आपको फ़ाइल नाम में संस्करण संख्या शामिल करनी चाहिए।

जैसे: < !--#include virtual="/includes/scripts-1.0.inc"-->

तो जब आप इसे करने के लिए परिवर्तन करने की जरूरत है, अपने में शामिल करने के लिए अद्यतन:

<!--#include virtual="/includes/scripts-2.0.inc"--> 
+0

यह काम कर सकता है, लेकिन फ़ाइल शामिल करने के उद्देश्य को हरा देता है ... क्योंकि मुझे फ़ाइल शामिल करने वाले प्रत्येक पृष्ठ को अपडेट करने की आवश्यकता होगी। – frankadelic

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

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