2011-11-25 12 views
6

मैं एक कॉन्फ़िग फ़ाइल thusly तक पहुँचने हूँ उपयोग नहीं कर सकते किसी भी web.config के लिए नहीं।प्रोग्राम के लिए उपयोग मनमाने ढंग से web.config appSettings (app.config ठीक है)

नोट: मैं वर्तमान एप्लिकेशन के web.config तक पहुंचने की कोशिश नहीं कर रहा हूं, मैं web.config को मनमाने ढंग से पथ में संशोधित करने का प्रयास कर रहा हूं।

(मैं ConfigurationManager के बजाय WebConfigurationManager की कोशिश की है, लेकिन यह समान परिणाम देता है)

अपवाद AppSettings संपत्ति एक्सेसर से फेंक दिया जाता है - GetSection("appSettings") की कोशिश कर रहा है और निश्चित रूप से एक AppSettingsSection करने के लिए इसे डाली एक ही अपवाद gievs। किसी भी तरह से, यहाँ यह है:

System.InvalidCastException: Unable to cast object of type 'System.Configuration.DefaultSection' to type 'System.Configuration.AppSettingsSection'. 

मैं स्पष्ट रूप से चारों ओर खोज की है, लेकिन केवल 'वर्तमान वेब ऐप्लिकेशन' के लिए web.config तक पहुँचने या XmlDocument/XDocument का उपयोग कर लोगों ने पाया है।

मेरा अनुमान है .exe.config फ़ाइलों को स्वचालित रूप से कुछ कॉन्फ़िगरेशन-प्रकार की जानकारी प्राप्त होती है जिसका अर्थ यह है कि यह सही ढंग से जानता है कि ऐप सेटिंग्स से कैसे निपटें। हालांकि मुझे नहीं पता कि फ़ाइल नाम के आधार पर, यह web.config के साथ काम नहीं करेगा।


आह। app.config के लिए मैं OpenExeConfiguration उपयोग कर रहा हूँ:

// works fine for .exe.config 
var config = ConfigurationManager.OpenExeConfiguration("some-assembly-here.exe"); 
config.AppSettings.Settings.Add("SomeSetting", "SomeValue"); 
config.Save(); 

यहाँ मैं OpenMappedMachineConfiguration जो machine.config के लिए प्रतीत होता है का उपयोग कर रहा है, तथापि मैं एक मनमाना web.config फ़ाइल को खोलने का एक और तरीका नहीं देख सकते हैं - किसी को भी ?

+0

तो? –

+0

हू, नहीं, एक ही समस्या। ऐसा इसलिए हो सकता है क्योंकि web.exe (या test.exe जैसा कि मैंने test.exe.config भी कोशिश की है) मौजूद नहीं है .. नहीं, यह नहीं है। मुझे अपनी कॉन्फ़िगरेशन के बीच यह अंतर देखने दो ... –

+0

[नवीनतम संपादन देखें: .exe.config मैं एक अलग विधि का उपयोग कर रहा हूं जो काम करता है] –

उत्तर

9

मेरे गलती - मैं OpenMappedExeConfiguration ठीक खोलते web.config फ़ाइलों का उपयोग कर सकते हैं: यदि आप तो web.exe.config के लिए सब कुछ उम्मीद के रूप में काम करता है web.config का नाम बदलने के

  var map = new ExeConfigurationFileMap(); 
      map.ExeConfigFilename = configPath; 
      var config = ConfigurationManager.OpenMappedExeConfiguration(map, ConfigurationUserLevel.None); 
संबंधित मुद्दे