2010-11-24 13 views
5

मैं अपने app.config से कनेक्शन स्ट्रिंग को पढ़ने की कोशिश कर रहा हूं लेकिन यह केवल मुझे एक कनेक्शन स्ट्रिंग दिखाता है और यह भी मेरे app.config में नहीं है।कनेक्शन पढ़ें अपने app.config

यहाँ मेरी कोड है:

System.Diagnostics.Debugger.Break(); 

Configuration config = 
ConfigurationManager.OpenExeConfiguration(
        AppDomain.CurrentDomain.SetupInformation.ConfigurationFile); 

foreach (var connectionString in config.ConnectionStrings.ConnectionStrings) 
    System.Diagnostics.Debug.Print(connectionString.ToString()); 

और इसे बाहर प्रिंट इस:

data source=.\SQLEXPRESS;Integrated Security=SSPI; 
    AttachDBFilename=|DataDirectory|aspnetdb.mdf;User Instance=true 

जब मैं अपने डेटाबेस में से एक है कि मैं में निर्दिष्ट किया है के लिए एक कस्टम connectionstring बाहर मुद्रित करने के लिए यह उम्मीद कर रहा हूँ app.config फ़ाइल।

अद्यतन

हाय दोस्तों, आप सभी मेरी समस्या पर समय बिताने और मदद करने के लिए कोशिश कर रहा है के लिए धन्यवाद देता हूं। यद्यपि आप सभी सही हैं कि मैं बस ConfigurationManager.ConnectionStrings का उपयोग कर सकता हूं या इस तरह किसी अन्य उपधारा का उपयोग कर सकता हूं, मुझे विश्वास है कि जब मैं ऐसा करता हूं, तो कॉन्फ़िगरेशन केवल पढ़ने के लिए होता है। मैं इसमें कोई बदलाव नहीं कर सकता, जैसे कि एक नई कनेक्शन स्ट्रिंग जोड़ें या मौजूदा को हटा दें। और मुझे ऐसा करने की ज़रूरत है। अगर रन-टाइम पर कॉन्फ़िगरेशन फ़ाइल को संशोधित करने का कोई तरीका है तो कृपया मुझे बताएं।

उत्तर

0

क्या आप कोई कॉन्फ़िगरेशन सेटिंग्स (कनेक्शन स्ट्रिंग के अलावा) पढ़ सकते हैं?

प्रयास करें:

System.Configuration.ConfigurationManager.AppSettings("MyAppVariable"); 

इसके अलावा, कि एक छोटे से वाक्य रचना जटिल लग रहा है। इस सरल संस्करण को आजमाएं:

System.Configuration.ConfigurationManager.ConnectionStrings("MyConnectionString").ConnectionString 
2

यह आपके machine.config से पढ़ता है। <connectionStrings> बाद app.config में सम्मिलित एक <clear/>.

+0

मैंने कोशिश की। कोई किस्मत, हालांकि। –

2

वहाँ एक कारण यह है कि आप OpenExeConfiguration उपयोग कर रहे हैं आपके विन्यास फ़ाइल खोलने के लिए है? यदि यह एक ऐप.कॉन्फिग है जिसे आपने अपनी परियोजना के हिस्से के रूप में बनाया है, तो आपको केवल ConfigurationManager.ConnectionStrings का उपयोग करना है।

2

ConfigurationManager.ConnectionStrings["ConnectionStringName"] इसे तब तक करना चाहिए जब तक कि इसे ऐपसेटिंग के रूप में संग्रहीत न किया जाए। मैं एक छोटे से सांत्वना एप्लिकेशन मैंने लिखा (एक बड़ा वेब अनुप्रयोग समाधान में शामिल है) के साथ ठीक उसी समस्या थी

इस मामले में, यह ConfigurationManager.AppSettings["SettingName"]

0

में हो सकता है - ऐसा लग रहा था कि मेरे app.config नहीं रह गया था बिल्कुल उठाया जा रहा है, और एकमात्र कनेक्शन स्ट्रिंग जो मैं वापस प्राप्त कर रहा था वह स्थानीय एसक्यूएल सर्वर था।

एक रीबूट इसे ठीक करता है।

1

यदि आप कनेक्शन कनेक्शन (या अपने app.config में से कोई भी अनुभाग) संपादित करना चाहते हैं, तो आपको कॉन्फ़िगरेशन ऑब्जेक्ट की GetSection() विधि द्वारा लौटाई गई ऑब्जेक्ट का उपयोग करने की आवश्यकता है।

Configuration config = ConfigurationManager.OpenExeConfiguration(ConfigurationUserLevel.None); 
ConnectionStringsSection csSettings = config.GetSection("connectionStrings") as ConnectionStringsSection; 
if(csSettings != null) 
{ 
    // examples of removing all settings, adding a new one and removing it 
    csSettings.ConnectionStrings.Clear(); 
    csSettings.ConnectionStrings.Add(new ConnectionStringSettings("myCS", "<connectionString>")); 
    csSettings.ConnectionStrings.Remove("myCS"); 
    // save the changes 
    config.Save(ConfigurationSaveMode.Modified); 
} 

मेरे अनुभव में, वहाँ OpenExeConfiguration (स्ट्रिंग) में एक बग जिसका अर्थ यह हमेशा अपने app.config खोलता है। फ़ाइल नाम से कॉन्फ़िगरेशन फ़ाइल खोलने के लिए, आपको OpenMappedExe कॉन्फ़िगरेशन() का उपयोग करने की आवश्यकता है।