2009-02-12 18 views
45

में डीबग सक्षम है या नहीं, मेरे पास मेरे वीबी.NET 1.1 दिनों से कुछ कोड है जो मुझे गतिशील रूप से जांचने की अनुमति देता है कि वेब.कॉन्फिग में डीबग सक्षम है या नहीं। मुझे लगा कि लॉगिंग चालू/बंद करने में पहिया का पुन: आविष्कार क्यों किया गया है यदि मैं बस वेब व्यवस्थापक को डीबग सक्षम कर सकता हूं। यहाँ कोड मैं VB.NET में प्रयोग किया जाता है कि ठीक से काम किया है:मैं कैसे जांचूं कि वेब.कॉन्फिग

ConfigurationSettings.GetConfig("system.web/compilation").Debug.ToString() 

जब मैं सी # को यह बदलने और .NET 3.5 मैं कुछ परेशानी में भाग उस में उपयोग करना चाहता था और यह काम नहीं होगा। इसके अतिरिक्त, मैं ConfigurationManager.GetSection के नए निर्माण का उपयोग करना चाहता हूं। क्या कोई सुझाव दे सकता है कि system.web/compilation/debug=true|false मान कैसे पढ़ा जाए?

बहुत सराहना की!

उत्तर

104

उपयोग:

HttpContext.Current.IsDebuggingEnabled 

यह गुण वास्तव में web.config विन्यास सेटिंग देखता। यदि आप प्रतिबिंबक का उपयोग करके इसे देखते हैं तो आप पाएंगे कि यह कुछ आंतरिक वर्गों का उपयोग करके वास्तविक कॉन्फ़िगरेशनसेक्शन ऑब्जेक्ट प्राप्त करता है।

+2

महान बनाने DEBUG लगातार अपनी परियोजना में चालू है! वेब.कॉन्फिग को सीधे पढ़ने से डीबग की जांच करने का यह एक बेहतर तरीका है ... उल्लेख करने योग्य एक बात, मुझे एक लेख मिला जो इंगित करता है कि यह विधि पृष्ठ स्तर पर डीबग सेट होने पर ध्यान में नहीं रखेगी। http://petesbloggerama.blogspot.com/2007/01/is-debug-mode-evil.html – Dscoduc

9

निम्नलिखित काम करना चाहिए

var cfg=(System.Web.Configuration.CompilationSection) ConfigurationManager.GetSection("system.web/compilation"); 
if (cfg.Debug) 
{ 
... 
} 
+0

उत्कृष्ट, धन्यवाद। – Dscoduc

+1

यह उस पर जाने के लिए एक बहुत ही जटिल और त्रुटि प्रवण तरीका है। @driis उत्तर का उपयोग करना चाहिए। –

+0

मैं बाइट से सहमत हूं, यही कारण है कि मैंने उसका जवाब भी +1 किया .... – JoshBerke

5

-Edit- मुझे पता है यह विशेष रूप से इस सवाल का जवाब नहीं है, जैसा कि आप Web.Config के लिए कहा है - जो तुरंत एक web.app पता चलता है, और है "रन-टाइम" पर निर्णय नहीं लिया गया है, लेकिन यह जांचने का एक अच्छा तरीका है कि यह डीबग मोड है या नहीं।

एक और नोट पर, आप आदर्श डिबग और एक ही एप्लिकेशन को रिलीज के मोड के बीच अदला-बदली नहीं चाहते .. अंत संपादित

सशर्त संकलन का उपयोग कर के बारे में कैसे ??

http://msdn.microsoft.com/en-us/library/aa691099(v=vs.71).aspx

bool isDebuggingEnabled = false 

#if debug 
    isDebuggingEnabled = true; 
#endif 

यह निश्चित रूप से सबसे अधिक उपयुक्त होगा, और किसी भी विशिष्ट संदर्भ की आवश्यकता नहीं है?

बस सुनिश्चित करें कि (तस्वीर देखें)

enter image description here

+0

मुझे ऐसे समाधानों के लिए यह समाधान पसंद है जहां कोई http संदर्भ नहीं है। मैं इसे बंडल अनुकूलन सेट करने के लिए उपयोग करता हूं। –

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