2008-12-30 8 views
10

क्या web.config फ़ाइल में <compilation /> टैग तक पहुंचने का कोई तरीका है?प्रोग्रामेटिक रूप से web.config के <compilation /> अनुभाग तक पहुंचें?

मैं "डिबग" विशेषता के लिए "सच" फ़ाइल में सेट है, तो जाँच करना चाहते हैं, लेकिन मैं इसे कैसे करना है यह पता लगाने नहीं कर पा रहे। मैंने WebConfigurationManager का उपयोग करने का प्रयास किया है, लेकिन ऐसा लगता है कि मुझे <compilation /> अनुभाग में जाने की अनुमति नहीं है।

अद्यतन:

मैं जानता हूँ कि मैं आसानी से बस एक XML दस्तावेज़ की तरह फ़ाइल लोड और XPath इस्तेमाल कर सकते हैं, लेकिन मुझे उम्मीद थी वहाँ पहले से ही ढांचे में कुछ है कि मेरे लिए यह करना होता था। ऐसा लगता है कि ऐप सेटिंग्स और कनेक्शन स्ट्रिंग्स प्राप्त करने के पहले से ही कुछ तरीके हैं क्योंकि ऐसा कुछ होगा।

मैं भी कुछ तरीकों से WebConfigurationManager.GetSection() विधि का उपयोग कर की कोशिश की है:

WebConfigurationManager.GetSection("compilation")// Name of the tag in the file 
WebConfigurationManager.GetSection("CompilationSection") // Name of the class that I'd expect would be returned by this method 
WebConfigurationManager.GetSection("system.web") // Parent tag of the 'compilation' tag 

उपरोक्त विधियों में से सभी लौट null। मुझे लगता है कि इस कॉन्फ़िगरेशन सेक्शन में जाने का एक तरीका है क्योंकि एक वर्ग है जो पहले से मौजूद है ('CompilationSection'), मैं बस यह नहीं समझ सकता कि इसे कैसे प्राप्त किया जाए।

+0

आप 'configSections' करने के लिए अपने अनुभाग जोड़ने है? कुछ ऐसा: '

... ' – cameron

उत्तर

25

उपयोग:

using System.Configuration; 
using System.Web.Configuration; 

...

CompilationSection configSection = 
      (CompilationSection) ConfigurationManager.GetSection("system.web/compilation"); 

फिर आप configSection.Debug संपत्ति देख सकते हैं।

टीआईपी: यदि आपको कॉन्फ़िगरेशन फ़ाइल से मूल्य प्राप्त करने के बारे में जानने की आवश्यकता है, तो मशीन 0config फ़ाइल को अपने \Windows\Microsoft.net\Framework\<version>\CONFIG फ़ोल्डर में जांचें। वहां आप देख सकते हैं कि सभी कॉन्फ़िगरेशन अनुभाग हैंडलर कैसे परिभाषित किए जाते हैं। एक बार जब आप कॉन्फ़िगर हैंडलर (इस मामले में, संकलन जांच) का नाम जानते हैं, तो आप इसे .NET दस्तावेज़ों में देख सकते हैं।

2

आखिरकार, आप Web.config फ़ाइल को XmlDocument में हमेशा लोड कर सकते हैं और XPath क्वेरी का पता लगाने के लिए उपयोग कर सकते हैं!

XmlDocument doc = new XmlDocument(); 
doc.Load(Server.MapPath("~/Web.config"));  
doc.SelectSingleNode("/configuration/system.web/compilation/@debug"); 

लेकिन, मैं आपको समाधान के लिए Configuration.GetSection विधि का उपयोग करें सुझाव देते हैं।

CompilationSection section = 
    Configuration.GetSection("system.web/compilation") as CompilationSection; 
bool debug = section != null && section.Debug; 
+0

आह ... 18 सेकंड। – StingyJack

0

क्या आप बस एक नियमित XML फ़ाइल के रूप में फ़ाइल लोड करते हैं और नोड्स प्राप्त करने के लिए XPath का उपयोग करते हैं?

0

ConfigurationManager.GetSection विधि का उपयोग करने का प्रयास करें।

22

यह जांचने का आसान तरीका है कि आप डीबग मोड में चल रहे हैं या नहीं, HttpContext.IsDebuggingEnabled संपत्ति का उपयोग करना है। यह संकलन तत्व की डीबग विशेषता से इसका उत्तर प्राप्त करता है जो वही काम है जिसे आप करने का प्रयास कर रहे हैं।

+0

यह आपके लिए सबसे अच्छा जवाब है जब आपके पास 'HttpContext' उदाहरण है (यानी जब आप नियंत्रक में अनुरोध कर रहे हों), लेकिन यदि आपको इसे' Global.asax' जैसे एप्लिकेशन में किसी अन्य स्थान पर करने की आवश्यकता है, कोड, फिर @ माइकस्कॉट का जवाब वह है जो आपको चाहिए। –

1

तुम हमेशा संकलक स्तर पर डिबग विकल्प आपके कोड बंद करके

#if (DEBUG) 

#endif 

के साथ मामला है कि विचार था में जाँच कर सकते हैं ...

+0

यह web.config ध्वज नहीं है क्योंकि इसे रनटाइम के दौरान बदला जा सकता है। जैसा कि आपने लिखा है यह केवल समय संकलित है और इसलिए मौसम पर निर्भर करता है कि कोई डेबग करता है या रिलीज (संकलन) जारी करता है। यही वह नहीं है जो यहां पूछा गया था। – Marc

1

उपयोग करके देखें:

HttpContext.Current.IsDebuggingEnabled 
संबंधित मुद्दे