2010-05-13 16 views
19

मेरे पास एक कंसोल ऐप है जिसमें एक कॉन्फ़िगरेशन फ़ाइल है जिसमें एक कनेक्शन स्ट्रिंग है जो नीचे दिखाया गया है:सी # विन्यास प्रबंधक। ConnectionStrings

<configuration> 
    <connectionStrings> 
    <add name="Target" 
     connectionString="server=MYSERVER; Database=MYDB; Integrated Security=SSPI;" /> 
    </connectionStrings> 
</configuration> 

जब मैं इसे अपने कनेक्शन में पास करता हूं:

ConfigurationManager.ConnectionStrings[1].ToString() 

मेरे पास दो मान हैं, इसलिए संग्रह में दूसरे का उपयोग करके, मेरा सवाल यह है कि यह दूसरा कहां से आ रहा है?

मैंने \ Bin संस्करण और मूल की जांच की है और यह मेरा नहीं है! इसकी स्पष्ट रूप से एक प्रणाली उत्पन्न हुई है लेकिन मैंने इसे पहले नहीं देखा है? क्या कोई मुझे प्रबुद्ध कर सकता है?

रहस्य कनेक्शन स्ट्रिंग है:

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

यह कोई समस्या नहीं है क्योंकि मैं यह जानना चाहूंगा कि यह क्यों हो रहा है? अग्रिम में धन्यवाद!

machine.config की खोज करने के बाद, उन लोगों के भविष्य के संदर्भ के लिए जो इस पर ठोकर खा सकते हैं या नहीं, यह स्पष्ट हो गया है कि इसकी अनुक्रमणिका द्वारा कॉन्फ़िगरेशन को संदर्भित करना बुरा अभ्यास है क्योंकि प्रत्येक स्टैक संभावित रूप से अलग होगा, यही कारण है कि " कुंजी "का उपयोग किया जाता है।

इस उदाहरण में मेरा कोड होगा:

ConfigurationManager.ConnectionStrings["Target"].ToString() 

चीयर्स सब!

+0

चीयर्स दोस्तों! मैं प्रबुद्ध हूँ :) – Yoda

उत्तर

26

अपने machine.config देखें। आप केवल अपने प्रवेश चाहते हैं, आप <connectionStrings> तत्व तो जैसे करने के लिए एक <clear /> तत्व जोड़ सकते हैं ...

<connectionStrings> 
    <clear /> 
    <add name="Target" 
     connectionString= 
      "server=MYSERVER; Database=MYDB; Integrated Security=SSPI;" /> 
</connectionStrings> 
+0

यह सही है, बहुत बहुत धन्यवाद। –

3

यह मशीन.कॉन्फिग फ़ाइल में परिभाषित किया गया है, और यह मशीन पर सभी .NET अनुप्रयोगों के लिए वैश्विक है।

कॉन्फ़िगरेशन पदानुक्रम के माध्यम से कनेक्शन स्ट्रिंग "स्टैक", यही कारण है कि आपके स्वयं के कनेक्शन स्ट्रिंग के लिए तत्व नाम "एड" टैग किया गया है। आप मशीन-स्तरीय कनेक्शन स्ट्रिंग्स की सूची में अपनी खुद की कनेक्शन स्ट्रिंग जोड़ रहे हैं।

यह उपयोग करने के लिए बेहतर हो सकता है:

ConfigurationManager.ConnectionStrings["Target"].ConnectionString 

आप अपने खुद के कनेक्शन स्ट्रिंग प्राप्त सुनिश्चित करने के लिए, भले ही machine.config संशोधित किया गया है।

+0

हाहा ने बस इस पोस्ट को संपादित करने के लिए मेरी पोस्ट संपादित की, फिर आपका संपादन देखा।बिलकुल सही! – Yoda

3

अपनी machine.config (WindowsDir \ Framework के अंतर्गत) की जांच करें। मैंने अभी मेरी जांच की है और मेरे पास एक ही चीज़ है।

0

सूचकांक पहली तत्व कनेक्शन में स्ट्रिंग्स टैग डिफ़ॉल्ट रूप से संग्रहीत किया जाता है और यह>सदस्यता का प्रतिनिधित्व करता है डेटाबेस कनेक्शन स्ट्रिंग।

सीएलआर के लिए विचार-विमर्श का कारण आपके आवेदन के दौरान उपयोग किया जाना चाहिए, ताकि आपकी ओर से सीएलआर इसे संलग्न कर सके।

सीएलआर कन्स्ट्रक्टर के बिना कक्षा निर्माण में डिफ़ॉल्ट कन्स्ट्रक्टर के साथ क्या करना है।

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