8

मैं पढ़ें/लिखें चाहता हूँ (और बचाने के लिए) अपने सुरक्षा स्तर के कारण दुर्गम है आवेदन के कार्यक्रम में विन्यास फाइलConfigurationProperty

app.config इस तरह है:

<configuration> 
    <configSections> 
    <section name="AdWordsApi" type="System.Configuration.DictionarySectionHandler" requirePermission="false"/> 
    </configSections> 
    <AdWordsApi> 
    <add key="LogPath" value=".\Logs\"/> 
    ... 
    </AdWordsApi> 
</configuration> 

जब मैं का उपयोग ConfigurationManager.GetSection app.config को पढ़ने के लिए, यह काम करता है:

var adwords_section = (System.Collections.Hashtable) System.Configuration.ConfigurationManager.GetSection("AdWordsApi"); 
Console.WriteLine((string)adwords_section["LogPath"]); 

बी ut जब मैं ConfigurationManager.OpenExeConfiguration का उपयोग करें:

'System.Configuration.ConfigurationElement.this[System.Configuration.ConfigurationProperty]' is inaccessible due to its protection level

लेकिन जैसे-जैसे मैं जानता हूँ कि, GetSection विन्यास प्रोग्राम रनटाइम पर नहीं बचा सकता, जैसा कि मैंने शुरू में कहा था:

Configuration config = ConfigurationManager.OpenExeConfiguration(ConfigurationUserLevel.PerUserRoamingAndLocal); 
ConfigurationSection section = config.GetSection("AdWordsApi"); 
Console.WriteLine(section["LogPath"]); 

मैं हमेशा इस त्रुटि मिलती है : मैं प्रोग्राम रनटाइम पर कॉन्फ़िगरेशन को सहेजना चाहता हूं, इसलिए मुझे ओपनएक्स कॉन्फ़िगरेशन का उपयोग करना होगा।

मैं लंबे समय के लिए googled है, क्या मैंने पाया AppSettings उपयोग करने के लिए है, लेकिन कस्टम खंड क्या मैं का उपयोग करें .. क्यों यह "ConfigurationProperty दुर्गम है" त्रुटि हो गई

किसी को समझा सकता है? धन्यवाद

संपादित करें:

मैं प्रतिलिपि स्थानीयसिस्टम और System.Configuration की स्थापना की हैको सच

उत्तर

12

आप this article का उपयोग कर सकते हैं।

संपादित करें:

<configSections> 
    <section name="AdWordsApi.appSettings" type="System.Configuration.AppSettingsSection" /> 
    </configSections> 
    <AdWordsApi.appSettings> 
    <add key="LogPath" value=".\Logs\"/> 
    </AdWordsApi.appSettings> 

इस कोड:

var config = ConfigurationManager.OpenExeConfiguration(ConfigurationUserLevel.PerUserRoamingAndLocal); 
    var settings = config.GetSection("AdWordsApi.appSettings") as AppSettingsSection; 
    if (settings != null) Console.Write(settings.Settings["LogPath"].Value); 
    Console.ReadLine(); 

इसके अलावा आप this article उपयोग कर सकते हैं

आप config उपयोग कर सकते हैं।

+0

के रूप में आप ने कहा कि मैं ConfigurationSection का एक उपवर्ग के रूप में परिभाषित किया गया AdwordsSettings: http: //pastecode.com/jF, और कार्यक्रम यहां रुकता है: स्ट्रिंग पथ = AdwordsSettings.Settings.LogPath एक NullReferenceException के साथ (ऑब्जेक्ट किसी ऑब्जेक्ट के उदाहरण पर सेट नहीं है) –

+0

और जब प्रोग्राम वहां रुक जाता है, तो मुझे एडवर्ड्स सेटिंग्स मिलती हैं।सेटिंग्स ** शून्य ** डीबगर –

+0

@gbstack में है, आपको उस लेख को अधिक जानकारी में पढ़ना चाहिए, या कॉन्फ़िगरेशन सिस्टम की बेहतर समझ प्राप्त करने के लिए अधिक समान लेखों के माध्यम से जाना चाहिए, http://www.codeproject.com/KB/dotnet /mysteriesofconfiguration.aspx। आपकी मूल त्रुटि की अपेक्षा की जाती है, क्योंकि आप खंड को पढ़ने के तरीके को गलत समझते हैं। –

1

मुझे यकीन है कि अगर यह है कि तुम क्या करने के लिए काम करेंगे नहीं हूँ करने की कोशिश कर रहे हैं, लेकिन आपने इसके बजाय ConfigurationUserLevel.None का उपयोग करने का प्रयास किया है?

+0

धन्यवाद, लेकिन ConfigurationUserLevel.None और ConfigurationUserLevel.PerUserRoaming उपयोग करने के बाद, मैं अभी भी एक ही त्रुटि मिलती है .. –

10

स्ट्रिंग key_value = refconfig.AppSettings.Settings ["key_name"]। मान;

+0

के बारे में बहुत कुछ पता है, जो कि मेरे कोड को वैसे भी तय करता है ... कॉन्फ़िगरेशन। ऐपसेटिंग एक ऐपसेटिंग स्क्रिप्शन ऑब्जेक्ट देता है, ऐपसेटिंगक्शन कॉन्फ़िगरेशनसेक्शन से प्राप्त होता है जो कॉन्फ़िगरेशन एलिमेंट से लिया गया है जो इस [] ऑपरेटर को "सुरक्षित आंतरिक" के रूप में परिभाषित करता है ", जिसका मतलब है कि यह" इसके सुरक्षा स्तर के कारण पहुंच योग्य नहीं है। " आप cs.AppSettings.Settings [" CompanyName "]) को आजमा सकते हैं;" – pcalkins

+0

अच्छा - मेरे लिए काम किया, और मुझे मेरी कॉन्फ़िगरेशन सेटिंग्स को दोबारा करने के लिए बचाया। धन्यवाद। – soupy1976

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