2011-07-07 10 views
11

लौटने में मैं कॉन्फ़िगरेशन मैनेजर.एपसेटिंग [myKey] का उपयोग कर रहा हूं, मेरे विंडोज़ एप्लिकेशन में app.config फ़ाइल से एक मान पढ़ने के लिए, लेकिन लौटाई गई मान हमेशा शून्य होती है, भले ही कुंजी मौजूद है और इसमें एक है मूल्य, देस किसी को पता है क्यों?ConfigurationManager.AppSettings शून्य

धन्यवाद

+0

केवल आपका कोड कहानी बता सकता है, इसे पोस्ट करें (क्या आप एक ही मामले में पुनर्प्राप्त कर रहे हैं) – V4Vendetta

उत्तर

16

एक, शायद आसान, विकल्प सेटिंग्स फ़ाइल का उपयोग करना है। यह एक डिजाइनर जीयूआई में App.config मानों के निर्माण और रखरखाव को समाहित करता है और मानों तक पहुंचने के लिए कोड उत्पन्न करता है।

सेटिंग्स फ़ाइल जोड़ने के लिए, VS में अपनी प्रोजेक्ट पर राइट क्लिक करें और 'जोड़ें -> नया आइटम' पर क्लिक करें, 'सेटिंग्स फ़ाइल' का चयन करें और इसे सार्थक नाम दें, उदा। MainSettings.settings। फिर आप एक आइटम जोड़ सकते हैं, उदा। Foo, निर्दिष्ट करें कि यह एप्लिकेशन या उपयोगकर्ता-व्यापी है, इसे टाइप करें और इसे एक मान असाइन करें। अपने कोड में आप सरल लेखन MainSettings.Default.Foo द्वारा मूल्य को पुनः प्राप्त कर सकते हैं।

संकलन के बाद, आप कॉन्फ़िगरेशन फ़ाइल को संपादित करके मान बदल सकते हैं। सेटिंग इस प्रकार दिखाई देगा: -

<applicationSettings> 
    <YourNamespace.MainSettings> 
     <setting name="Foo" serializeAs="String"> 
      <value>Bar</value> 
     </setting> 
    </YourNamespace.MainSettings> 
</applicationSettings> 
+0

बहुत बढ़िया सुझाव, @Adam। इसके लिए आपको 8000 से अधिक प्रतिनिधि उछाल दिया। अच्छा काम! – retrodrone

+0

@retrodone - धन्यवाद! मैंने छुट्टियों से वापस आने के बाद पहली बार लॉग इन किया है ... –

+0

जब आप मैन्युअल रूप से कॉन्फ़िगरेशन को बदलते हैं, तो यह स्वचालित रूप से VS में सेटिंग्स का प्रचार नहीं करता है। आपको गुणों पर जाना है और इसे हल करना है। –

8

आप यहाँ क्या प्रदान की है से कहने के लिए मुश्किल:

  1. MyKey में मूल्य के अपनी वर्तनी की जांच
  2. सुनिश्चित करें कि आप सही app.config को देख रहे हैं - यह अगर कॉल एक संदर्भित लाइब्रेरी में है और आप कॉलिंग प्रोजेक्ट के app.config से आने वाले मूल्य की अपेक्षा कर रहे हैं, लेकिन आपकी लाइब्रेरी में किसी कारण से app.config है, जिससे आपकी समस्या हो सकती है।
+0

मैं वास्तव में केवल एक ऐप.कॉन्फिग फ़ाइल है, और मैं सिर्फ कॉन्फ़िगरेशन मैनेजर को कॉल कर रहा हूं। ऐपसेटिंग [myKey], और कुंजी मौजूद है! यह सुनिश्चित नहीं है कि यह हो रहा है –

+0

कॉन्फ़िगरेशन प्रबंधक। ऐपसेटिंग [myKey] [केस-असंवेदनशील] है (https://stackoverflow.com/questions/3295293/how-to-check-if-an-appsettings-key-exists#comment49367267_6071115) ; बस इस जवाब को संपादित किया। – Chris

0

मैं अपने समाधान में दो परियोजना है पहले मैं वर्ग पुस्तकालय परियोजना में app.config फ़ाइल जो सभी उदाहरणों सांत्वना आवेदन से कॉल है मैं कक्षा में कॉन्फ़िग फ़ाइल में इन प्रविष्टियों जोड़ा जोड़ने lib परियोजना

<appSettings> 
<add key="userName" value="user2" /> 
<add key="emilsLimit" value="50" /> 
</appSettings> 

यह शून्य अपवाद फेंक दिया गया था जब मैं वर्ग पुस्तकालय परियोजना में एक वर्ग में इन मिलता है लेकिन जब मैं कक्षा लाइब्रेरी प्रोजेक्ट से app.config हटा सकते हैं और कंसोल प्रोजेक्ट में कहा कि यह works.Cheers

नोट : कक्षा lib परियोजना संदर्भ कंसोल में जोड़ा जाता है

1

मैं एक ही समस्या हो रही थी, लेकिन यह appSettings में स्ट्रिंग ऊपर उठाता है जब मैं अंत पर एक खाली स्ट्रिंग (+ "") जोड़ा

उदाहरण के लिए

string s = ConfigurationManager.AppSettings["myKey"] + ""; 
संबंधित मुद्दे