दिलचस्प पोस्ट
सी # में महत्वपूर्ण आंकड़ों के साथ स्वरूपण संख्या क्या वेब सॉकेट्स के लिए मूल PHP समर्थन उपलब्ध है? मैं एक जावा एसक्यूएल। रिसटसैट का आकार कैसे प्राप्त करूं? मैं गतिशील रूप से जावास्क्रिप्ट अरै (जेएसओएन प्रारूप) कैसे बना सकता हूं? दूरस्थ मशीन पर एक खोल स्क्रिप्ट को चलाने के लिए SSH का उपयोग कैसे करें? एंड्रॉइड में ऐप को स्वाइप करके कोड को कैसे नियंत्रित किया जाता है? क्या मैं गिट में हटाने के बाद एक शाखा पुनः प्राप्त कर सकता हूं? Log4j XML कॉन्फ़िग फ़ाइल का उपयोग कर हाइबरनेट लॉगिंग को कॉन्फ़िगर करना? कुंजी पर आधारित PHP बहुआयामी सरणी को सॉर्ट करें? Google Chrome को स्थानीय फ़ाइल से URL लोड करने के लिए XMLHttpRequest का उपयोग करने की अनुमति दें एंड्रॉइड में प्रगति बार की प्रगति रंग कैसे बदल सकता है जावा में टाइमस्टैम्प तिथि को कैसे परिवर्तित करें? AsyncTask, यह इस तरह के एक प्रदर्शन जुर्माना मारा जाना चाहिए …? स्क्रीन किनारों पर मेरे विंडोज फॉर्म एप स्नैप कैसे करें? बूटस्ट्रैप बंद करें मेनू पर क्लिक करें "पर क्लिक करें"

Web.config संशोधित होने पर ASP.NET अनुप्रयोग को पुनरारंभ करने से कैसे रोकें?

मैं ApplicationHost.CreateApplicationHost विधि के माध्यम से asp.net रनटाइम की मेजबानी कर रहा हूँ। जब मैं अनुप्रयोग को चालू कर रहा हूं, तब वेबweb.config को संशोधित करते हैं, तो मुझे बहुत मौका मिल गया है ThreadAbortException फेंक दिया यह ठीक है कि मेरा आवेदन नीचे क्रैश हो रहा है। मैं यह मान रहा हूँ क्योंकि रनटाइम ने कॉन्फ़िगरेशन में परिवर्तनों का पता लगाया है और पुनरारंभ करना चाहता है।

यह वास्तव में हमारे लिए एक समर्थित परिदृश्य नहीं है, इसलिए मैं अगर मैं स्वत: पुनः लोड करने से केवल स्विच कर सकता पसंद करूँगा

क्या किसी को भी यह करना आता है?

वेब के समाधान से एकत्रित समाधान "Web.config संशोधित होने पर ASP.NET अनुप्रयोग को पुनरारंभ करने से कैसे रोकें?"

जहाँ तक मुझे पता है कि इस व्यवहार को अक्षम करने का कोई तरीका नहीं है, वेब कॉन्फिग में हुए बदलावों को पुनरारंभ करने के लिए आवेदन

अद्यतन: यह वास्तव में संभव है, कई तरीके हैं, अच्छी तरह से प्रलेखित, जैसा कि इस उत्तर में समझाया गया है *

मूल उत्तर:

अन्य संदर्भ के लिए यहां एक समान सवाल है मुझे अतिरिक्त जानकारी मिली है जो सहायक हो सकती है

विन्यास परिवर्तन अनुप्रयोग डोमेन का एक पुनरारंभ करें
Web.config फ़ाइलों में कॉन्फ़िगरेशन सेटिंग्स में परिवर्तन अप्रत्यक्ष रूप से अनुप्रयोग डोमेन को पुनरारंभ करने के लिए कारण। यह व्यवहार डिजाइन द्वारा होता है आप बाहरी कॉन्फ़िगरेशन फ़ाइलों को संदर्भित करने के लिए configSource विशेषता का वैकल्पिक रूप से उपयोग कर सकते हैं जो कोई परिवर्तन किए जाने पर पुनरारंभ नहीं करते हैं अधिक जानकारी के लिए, अनुभाग तत्वों द्वारा इनहेरिट की गई सामान्य विशेषता में configSource देखें ।

इस एमएसडीएन अनुच्छेद से

* अस्वीकरण: मैंने अन्य जवाब लिखा था और सामान्य रूप से स्वयं-संदर्भ नहीं बनाते थे, लेकिन यहां इस लिंक को लिंक करने के लिए पर्याप्त रूप से इसे उपयुक्त मानते हैं, क्योंकि इस पोस्ट के बाद यह वास्तव में बहुत अलग है: IIS मोर्चे पर क्लिक करके एक समाधान बहुत आसान है -एण्ड, और वर्कअराउंड एएसपी.नेट 1.0 के बाद से मौजूद हैं।

मैं एक ही लाइन के साथ एक बड़ी समस्या में भाग गया – ऐप डोमैन बेस निर्देशिका में किसी भी फाइल या सब-फ़ोल्डर में बदलाव के कारण होस्टिंग पर्यावरण बंद होने के कारण होता है यह हमारे ऐप्लिकेशन के लिए एक बहुत बड़ी समस्या है क्योंकि हम उसी ऐप डॉक्स में एक WPF UI चला रहे हैं और हम इसे उपयोगकर्ता के लिए विचलित किए बिना पुनरारंभ नहीं कर सकते।

मैं वास्तव में आवेदन के वेब आधारित भाग के लिए एक अलग ऐपडामेन चलाने से बचने के लिए चाहता था इसलिए मैंने कुछ परावर्तन के साथ खुदाई की। मुझे पता चला कि अपराधी आंतरिक श्रेणी FileChangesMonitor

इसलिए मैंने इस समस्या को हल करने के लिए एक भयानक भयानक प्रतिबिंब हैक लिखा था। मैंने सोचा था कि मैं इसे यहाँ किसी और के लिए संभावित समाधान के रूप में पोस्ट करना चाहता हूं, उसी समस्या का आपको फ़ाइल / फ़ोल्डर परिवर्तनों पर शट डाउन को निष्क्रिय करने के लिए बस HttpInternals.StopFileMonitoring() को कॉल करने की आवश्यकता है। HttpInternals.StopFileMonitoring()

 internal static class HttpInternals { private static readonly FieldInfo s_TheRuntime = typeof(HttpRuntime).GetField("_theRuntime", BindingFlags.NonPublic | BindingFlags.Static); private static readonly FieldInfo s_FileChangesMonitor = typeof(HttpRuntime).GetField("_fcm", BindingFlags.NonPublic | BindingFlags.Instance); private static readonly MethodInfo s_FileChangesMonitorStop = s_FileChangesMonitor.FieldType.GetMethod("Stop", BindingFlags.NonPublic | BindingFlags.Instance); private static object HttpRuntime { get { return s_TheRuntime.GetValue(null); } } private static object FileChangesMonitor { get { return s_FileChangesMonitor.GetValue(HttpRuntime); } } public static void StopFileMonitoring() { s_FileChangesMonitorStop.Invoke(FileChangesMonitor, null); } } 

दरअसल, पहले दो जवाब गलत हैं यह संभव है, और काफी आसान है, इस रीसाइक्लिंग को रोकने से रोकने के लिए, और यह सुविधा कम से कम IIS6 के बाद से उपलब्ध है।

विधि 1 (सिस्टम विस्तृत)

HKLM\SOFTWARE\Wow6432Node\Microsoft\ASP.NET\FCNMode के मान 1 लिए DWORD रजिस्ट्री सेटिंग बदलें, जो सभी फ़ाइल परिवर्तन सूचनाओं को अक्षम कर देगा।

स्थान से उलझन में मत बनो: Wow6432Node इस मामले में, आपके वेब एप्लिकेशन के bitness पर कोई प्रभाव नहीं पड़ता है।

विधि 2 (.NET 4.5+)

यदि आप .NET 4.5 का प्रयोग कर रहे हैं, तो अब यह प्रत्येक साइट स्तर पर अक्षम करने के लिए संभव है , बस अपने web.config में निम्नलिखित का उपयोग करें:

 <httpRuntime fcnMode="Disabled"/> 

विधि 3 (आईआईएस 6 +)

अंत में, और भी (कम से कम) आईआईएस 6 के बाद से, केवल एक डिस्लोव रोटेशनऑन कॉन्फ़िफ चेंज नामक एक सेटिंग के रूप में केवल अनुप्रयोग पूल (कम से कम यह है कि मुझे लगता है कि एमएसडीएन पर पाठ कहने की कोशिश करता है, लेकिन मैंने इसका परीक्षण नहीं किया है)। इसे true सेट करें और एप्लिकेशन पूल के कॉन्फ़िगरेशन में हुए परिवर्तनों के परिणामस्वरूप तत्काल पुनरावृत्ति न हो जाए

यह अंतिम सेटिंग एप्लिकेशन पूल के उन्नत सेटिंग्स से भी सेट की जा सकती है:

कॉन्फ़िगरेशन परिवर्तन के लिए रीसाइक्लिंग अक्षम करें

विधि 4 (एएसपी.नेट 1.0 और 1.1)

एएसपी.नेट 1.0 या 1.1 का इस्तेमाल करते हुए (पुरानी) वेबसाइटों के लिए, एक निश्चित बग है जो फ़ाइल परिवर्तनों पर तेजी से और दोहराए जाने वाले पुन: उस समय का समाधान मार्टीन ने मुख्य प्रश्न के तहत सुझाया था, अर्थात्, आपके web.config में निम्नलिखित की तरह कुछ:

 <compilation debug="false" defaultLanguage="vb" numRecompilesBeforeAppRestart="5000"> 

यह रीसाइक्लिंग को अक्षम नहीं करता है, लेकिन ऐसा इसलिए होता है जब 5000 पुनर्मनुमापन हो गए। यह संख्या उपयोगी है या नहीं यह आपके आवेदन के आकार पर निर्भर करता है। माइक्रोसॉफ्ट स्पष्ट रूप से यह नहीं कहता कि वास्तव में एक पुन: संपालन क्या है डिफ़ॉल्ट, हालांकि, 15 है

एक तरफ के रूप में: .NET या विंडोज के संस्करण की परवाह किए बिना, हम पाते हैं कि जब एक साझा हिस्से से आवेदन चलाया जाता है और लोड-संतुलित परिवेश में उपयोग किया जाता है, तो साइट लगातार रीसायकल करती है इसे हल करने का एकमात्र तरीका यह है कि रजिस्ट्री में FNCMode सेटिंग जोड़कर (लेकिन अब इसमें अधिक FNCMode विकल्प हैं)।

एक समाधान web.config अनुभाग में निम्न तत्व जोड़ देगा:

 <httpRuntime waitChangeNotification="315360000" maxWaitChangeNotification="315360000" /> 

जैसा कि jfburdet द्वारा उल्लिखित किया गया है, समाधान का इंतजार करेंचेंजनोटिफिकेशन और मैक्सवाइट चेंज नोटिफिकेशन का उपयोग करना है।

कहा जा रहा है, आपको पता होना चाहिए कि वे IIS 7 पर काम नहीं करते हैं यदि ASP.NET मिश्रित मोड में चलाया जाता है: http://forums.iis.net/t/1149344.aspx