2009-02-26 15 views
33

यदि आप app.config को बदलते हैं तो क्या आपको विंडोज़ सेवा को पुनरारंभ करना होगा?यदि आप app.config को बदलते हैं तो क्या आपको विंडोज़ सेवा को पुनरारंभ करना होगा?

+1

आपको नहीं करना है। रेफ लिंक http://msdn.microsoft.com/en-us/library/system.configuration.configurationmanager.refreshsection.aspx –

उत्तर

28

Yes, you do:

नेट ढांचे app.config एक बार पढ़ा होगा, और app.config फिर से स्पर्श कभी नहीं। यही कारण है कि आपको परिवर्तन लेने के लिए एप्लिकेशन को पुनरारंभ करना होगा।

क्यों नहीं है फ्रेमवर्क यह पता लगाता है कि app.config बदल गया है, और सभी कॉन्फ़िगरेशन डेटा रीफ्रेश करें?

कारण सरल है, यह सामान्य रूप से संभव नहीं है।

आइए उपयोग रेमंड की 'कल्पना यह किया जा सकता है "तर्क यहाँ ...

4

हां।

संभवतः आप appname.exe.config फ़ाइल का मतलब है?

8

नहीं, आप पर नहीं हैं। लेकिन यदि आप प्रभावी होने के लिए app.config में परिवर्तनों के लिए चाहते हैं, तो आपको इसे पुनरारंभ करना पड़ सकता है। या आप एक कस्टम कॉन्फ़िगरेशन फ़ाइल वॉचर तंत्र को कार्यान्वित करना चाहते हैं जो फ्लाई पर सेवाओं की सेटिंग्स को बदल देगा।

+7

"अगर आप एप.कॉन्फिग में बदलावों को प्रभावी बनाने के लिए चाहते हैं," - मुझे लगता है कि इसमें अंतर्निहित है प्रश्न! –

+0

बढ़िया, बस जब मैं रबर मुर्गियों से बाहर हूं। –

+0

@Gamecat: मुफ्त रेंज? –

1

यह प्रश्न के दायरे से बाहर निकलता है, लेकिन मुझे लगता है कि आप केवल कुछ "एप्लिकेशन-विशिष्ट" अनुभाग (ऐपसेटिंग आदि) में परिवर्तन करना चाहते हैं।

आप अपने स्वयं के कॉन्फ़िगरेशन सेक्शन हैंडलर को लिखने से बेहतर हैं, जो इसकी अपनी कॉन्फ़िगरेशन फ़ाइल पर नज़र रखता है - दृष्टिकोण nlog uses। अनुभाग "स्वचालित पुनर्गठन" अनुभाग देखें।

2

आमतौर पर हाँ। हालांकि आप एक विंडोज़ सेवा लिख ​​सकते हैं जो कॉन्फ़िगरेशन फ़ाइल पर फ़ाइल मॉनीटर रखेगी और एक संशोधन को समझें और इसे पुनरारंभ करने की आवश्यकता के बिना लागू करें।

उदाहरण के लिए Log4Net लॉगिंग फ्रेमवर्क इसकी कॉन्फ़िगरेशन फ़ाइल के लिए ऐसी तंत्र प्रदान करता है।

7

मैंने पहले इसका उपयोग किया है। अनिवार्य रूप से यह मान पुनर्प्राप्त करने से पहले निर्दिष्ट अनुभाग को पुनः लोड करता है। एक कॉन्फ़िगरेशन फ़ाइल वॉचर से काफी कम कुशल जो मांग पर रीफ्रेश करता है, लेकिन निश्चित रूप से प्रभावी रूप से प्रभावी ढंग से उपयोग किया जाता है।

ConfigurationManager.RefreshSection("appSettings") 
    sValue = ConfigurationManager.AppSettings(name) 
+0

यह एक अच्छा खोज है! – d219

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

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