2010-01-03 11 views
5

में एपेटेटिंग का उपयोग करना मेरे पास एक विनफॉर्म एप्लिकेशन है जिसमें कुछ डेटा एक्सएमएल फाइलों में संग्रहीत किया जाता है। वह स्थान जहां इन XML फ़ाइलों को संग्रहीत किया जाना चाहिए उपयोगकर्ता द्वारा कॉन्फ़िगर किया जा सकता है, और AppSettings में संग्रहीत किया जाता है। मेरी सभी परतें अलग-अलग असेंबली हैं। क्या मैं अपनी डीएएल असेंबली से अपनी सेटिंग्स तक पहुंच सकता हूं, या क्या मुझे इसे अपनी सभी परतों के माध्यम से तर्क के रूप में पास करना चाहिए?डीएएल परत

जब मैं अपने DAL परत से सेटिंग पढ़ने की कोशिश, मैं एक और समस्या

 Configuration config = ConfigurationManager.OpenExeConfiguration(
      System.Reflection.Assembly.GetEntryAssembly().Location); 
     string dataStorageLocation = config.AppSettings["DataStorageLocation"]; 

config.AppSettings मुठभेड़ [ "DataStorageLocation"] एक संकलन त्रुटि देता है: System.Configuration.ConfigurationElement.this [प्रणाली। कॉन्फ़िगरेशन। कॉन्फ़िगरेशनप्रोपर्टी] इसके सुरक्षा स्तर के कारण पहुंच योग्य नहीं है। ऐसा क्यों है?

क्या कोई मुझे सही रास्ते पर रख सकता है? धन्यवाद।

उत्तर

8

आपको config.AppSettings.Settings["DataStorageLocation"] का उपयोग करने की आवश्यकता है। नमूना के लिए the MSDN documentation देखें।

वैकल्पिक रूप से, और IMHO बेहतर, आप मेजबान अनुप्रयोग की AppSettings तक पहुंचने के लिए System.Configuration.ConfigurationManager.AppSettings[name] का उपयोग कर सकते हैं। यह शायद आपकी तकनीक से अधिक लचीला है, क्योंकि यह भी काम करेगा यदि आपकी डीएएल असेंबली है, उदाहरण के लिए, आईआईएस पर सेवा स्तर में होस्ट किया गया है। होस्ट एप्लिकेशन की कॉन्फ़िगरेशन फ़ाइल से सीधे कॉन्फ़िगरेशन जानकारी तक पहुंचने से पूरी तरह से स्वीकार्य है, और आमतौर पर परतों के माध्यम से कॉन्फ़िगरेशन जानकारी को पार करने से बेहतर है।

+0

मुझे एक ही त्रुटि मिल रही थी .. मैं कस्टम कॉन्फ़िगरेशन फ़ाइल का उपयोग कर रहा हूं, इस कस्टम कॉन्फ़िगरेशन फ़ाइल में AppSettings अनुभाग में परिभाषित मान तक पहुंचने के लिए मुझे निम्न का उपयोग करना था: string val = config.AppSettings.Settings ["OpMode "] .Value। धन्यवाद। जो के जवाब को वास्तव में पूरा करने के लिए – RDV

3

ऐप सेटिंग्स कॉलिंग प्रक्रिया द्वारा लोड की गई किसी भी असेंबली के लिए सुलभ हैं, इसलिए आपको लोड होने वाली किसी भी असेंबली के साथ उन्हें एक्सेस करने में कोई समस्या नहीं होगी।

+1

+1। धन्यवाद, डेरिन। – Peter

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