2009-08-13 9 views
363

में मौजूद नहीं है, मैं कॉन्फ़िगरेशन फ़ाइल से connectionStrings तक पहुंचने का प्रयास कर रहा हूं। कोड एएसपी.नेट + सी # है। मैंने संदर्भ में System.Configuration जोड़ा है और इसका उपयोग करने के साथ भी उल्लेख किया है। लेकिन फिर भी यह असेंबली स्वीकार नहीं करेगा।नाम 'कॉन्फ़िगरेशन मैनेजर' नाम वर्तमान संदर्भ

मैं वीएसटीएस 2008 का उपयोग कर रहा हूं। कोई विचार क्या कारण हो सकता है?

एक और अजीब चीज असेंबली नाम "System.configuration" के रूप में दिखाया गया है, एक कम मामला सी जो अन्य सिस्टम असेंबली के लिए नाम प्रदर्शित नहीं होते हैं।

using System; 
using System.Collections.Generic; 
using System.Linq; 
using System.Text; 
using System.Configuration; 

namespace Utility 
{ 
    public class CommonVariables 
    { 
     public static String ConnectionString 
     { 
      get { return ConfigurationManager.ConnectionStrings["EmployeeEntities"].ConnectionString; } 
     } 
    } 
} 

कॉन्फ़िग:

<?xml version="1.0" encoding="utf-8"?> 
<configuration> 
    <connectionStrings> 
    <add name="qbankEntities" connectionString="metadata=res://*/qbankModel.csdl|res://*/qbankModel.ssdl|res://*/qbankModel.msl;provider=System.Data.SqlClient;provider connection string=&quot;Data Source=localhost;Initial Catalog=qbank;Persist Security Info=True;User ID=**;Password=****;MultipleActiveResultSets=True&quot;" providerName="System.Data.EntityClient" /> 
    </connectionStrings> 
</configuration> 
+1

क्या आप कुछ कोड जोड़ सकते हैं? इसका मतलब क्या है कि यह असेंबली स्वीकार नहीं करेगा? क्या आपको एक विशिष्ट त्रुटि संदेश मिल रहा है? संपत्ति की खिड़की से –

उत्तर

29

ठीक है .. यह VSTS को पुनरारंभ करने के बाद काम करता है। link एक ही समस्या के लिए समाधान का सुझाव दिया। इच्छा है कि मैं इसे पहले देख सकता था। :)

+9

7 साल बाद और यह अभी भी शर्म की बात है कि यह कितनी बार जवाब है। – Archer

+3

उत्तर के रूप में अपना उत्तर चिह्नित करने की तरह कुछ भी नहीं, जब यह वास्तव में उत्तर नहीं है। बहुत खराब मोड वास्तविक सही उत्तर के लिए इसे संपादित नहीं कर सकते हैं। दोस्त ने अंक के लिए अपना जवाब चिह्नित किया .... – ggiaquin16

6

क्या आप वाकई नेट विधानसभा के लिए एक संदर्भ और कुछ और नहीं जोड़ा है कर रहे हैं? मैं आपका संदर्भ हटा दूंगा और फिर इसे फिर से जोड़ने का प्रयास करूँगा, यह सुनिश्चित कर लें कि आप विजुअल स्टूडियो संदर्भ संवाद में .NET टैब से चयन करें - नवीनतम संस्करण जीएसी में 2.0.0.0 होना चाहिए।

+0

विधानसभा विवरण: नाम: System.Configuration पथ: C: \ Windows \ Microsoft.NET \ Framework \ v2.0.50727 \ System.configuration.dll संस्करण: 2.0.0.0 रनटाइम संस्करण: v2.0.50727 कुछ भी संदिग्ध लग रहा है? धन्यवाद! – pencilslate

+0

नहीं, यह बिल्कुल अपेक्षित है। वास्तव में कितना अजीब - मुझे खेद है, लेकिन मैंने इसे पहले कभी नहीं देखा है। सौभाग्य! –

3

एक सैनिटी चेक के लिए, एक नया वेब अनुप्रयोग प्रोजेक्ट बनाने का प्रयास करें, Default.aspx पृष्ठ के लिए कोड को खोलें। अपनी कनेक्शन स्ट्रिंग तक पहुंचने के लिए पेज_लोड में एक लाइन जोड़ें।

इसमें सिस्टम होना चाहिए। कॉन्फ़िगरेशन डिफ़ॉल्ट रूप से संदर्भ के रूप में जोड़ा गया है। आपको पहले से ही अपनी कोड फ़ाइल के शीर्ष पर उपयोग कथन भी देखना चाहिए।

फ़ाइल के पीछे मेरा कोड अब इस तरह दिखता है और कोई समस्या नहीं है।

using System; 
using System.Collections; 
using System.Configuration; 
using System.Data; 
using System.Linq; 
using System.Web; 
using System.Web.Security; 
using System.Web.UI; 
using System.Web.UI.HtmlControls; 
using System.Web.UI.WebControls; 
using System.Web.UI.WebControls.WebParts; 
using System.Xml.Linq; 

namespace WebApplication1 
{ 
    public partial class _Default : System.Web.UI.Page 
    { 
    protected void Page_Load(object sender, EventArgs e) 
    { 
     string connString = ConfigurationManager.ConnectionStrings["MyConnectionStringName"].ConnectionString; 
    } 
    } 
} 

इसका मतलब यह है कि मैं एक नाम के बराबर "MyConnectionStringName" इतनी तरह के साथ अपने web.config में एक कनेक्शन स्ट्रिंग है ...

<?xml version="1.0" encoding="utf-8" ?> 
<configuration> 
    <configSections> 
    </configSections> 
    <connectionStrings> 
     <add name="MyConnectionStringName" 
      connectionString="Data Source=.;Initial Catalog=MyDatabase;Integrated Security=True" 
      providerName="System.Data.SqlClient" /> 
    </connectionStrings> 
</configuration> 

हाँ, यह प्राथमिक मुझे पता है। लेकिन अगर आपके पास कोई बेहतर विचार नहीं है तो कभी-कभी यह वास्तव में कुछ आसान जांचने में मदद करता है जो आपको पता होना चाहिए।

663

यह केवल नामस्थानSystem.Configuration का उपयोग करने के लिए आवश्यक नहीं है। आपको संदर्भ टैब पर राइट-क्लिक-इन करके असेंबलीSystem.Configuration.dll का संदर्भ भी जोड़ना है, संदर्भ जोड़ें चुनें और फिर सिस्टम खोजें। कॉन्फ़िगरेशन। यह निश्चित रूप से काम करेगा।

using System.Collections.Specialized; 
+0

+1 धन्यवाद कियरन। क्या आपको पता है कि ऐसा क्यों किया जाना चाहिए जब अधिकांश अन्य असेंबली को 'उपयोग' कथन समेत बुलाया जा सके? – Dhaust

+10

यह मेरी समझ है: यह गलत हो सकता है। जब आप संदर्भ जोड़ते हैं तो आप संकलन/निर्माण पर बिन फ़ोल्डर में डीएलएल की प्रतिलिपि बनाने के लिए कह रहे हैं। कोर के रूप में देखा जाने वाला कुछ डीएल जोड़ा जाता है जब प्रोजेक्ट बनाया जाता है, यानी जब आप फ़ाइल-> नई प्रोजेक्ट जाते हैं तो उस बिंदु पर संदर्भ स्थापित किए जाते हैं। उन्हें सभी को एक ही प्रक्रिया के माध्यम से जाना है कि कुछ आपके लिए किए गए हैं और कुछ आपको मैन्युअल रूप से करना है। आप अपने सिस्टम डीएलएल के संदर्भ को हटाकर और अपना पूरा कोड असफल करके इसे जांच सकते हैं। =) – Kieran

+6

ठीक है। इसलिए मैंने थोड़ा और शोध किया है और पाया है कि उपर्युक्त सत्य है। हालांकि कुछ फाइलों को बिन फ़ोल्डर में चलाने की आवश्यकता नहीं होगी क्योंकि वे ग्लोबल असेंबली कैशे (जीएसी) में हैं, जहां बिन स्थानीय असेंबली काशी है। System.dll की तरह। – Kieran

9

मैं इस मुद्दे configurationmanager does not exist in the current context लिए एक बेहतर समाधान मिल गया है: इसके अलावा NameValueCollection के लिए आप लिखने के लिए की है।

web.config से एक पढ़ने कनेक्शन स्ट्रिंग के लिए हमें ConfigurationManager कक्षा और इसकी विधि का उपयोग करने की आवश्यकता है। यदि आप उपयोग करना चाहते हैं तो आपको System.Configuration का उपयोग करके नामस्थान जोड़ने की आवश्यकता है;

हालांकि आप इस नामस्थान का उपयोग करते हैं, जब आप ConfigurationManager कक्षा का उपयोग करने का प्रयास करते हैं तो सिस्टम एक त्रुटि दिखाता है "कॉन्फ़िगरेशन प्रबंधक वर्तमान संदर्भ में मौजूद नहीं है"। इस समस्या को हल करने के लिए:

ConfigurationManager.ConnectionStrings["ConnectionSql"].ConnectionString; 
1

इस कोड को एक पुस्तकालय परियोजना की तरह, एक अलग परियोजना पर है। system.configuration के संदर्भ को जोड़ने के लिए मत भूलना।

0

यदि आप गलती से एक अलग, असंबंधित परियोजना का संदर्भ जोड़ते हैं तो आपको यह त्रुटि भी मिल सकती है। जांचें कि क्या यह आपके लिए लागू होता है।

90

अपनी प्रोजेक्ट में, राइट-क्लिक करें, संदर्भ जोड़ें ..., .NET टैब में, System.Configuration घटक नाम ढूंढें और ठीक क्लिक करें।

using System.Configuration आपके द्वारा उपयोग की जाने वाली किसी भी कक्षा के लिए उस नामस्थान में खोजने के लिए कंपाइलर/इंटेलिसेन्स को बताता है। अन्यथा, आपको हर बार पूर्ण नाम (System.Configuration.ConfigurationManager) का उपयोग करना होगा। लेकिन यदि आप संदर्भ नहीं जोड़ते हैं, तो नामस्थान/कक्षा कहीं भी नहीं मिलेगी।

ध्यान दें कि एक डीएलएल के पास कोई नामस्थान हो सकता है, इसलिए फ़ाइल System.Configuration.dll, सिद्धांत रूप में, नामस्थान Some.Random.Name हो सकता है। स्पष्टता/स्थिरता के लिए वे आमतौर पर समान होते हैं, लेकिन अपवाद हैं।

8

आप की तरह

CS0618 (एक समाधान में मेरे मामले में 64 में!) चेतावनी का एक बहुत मिल रहे हैं: 'ConfigurationSettings.AppSettings' अप्रचलित है: 'इस विधि अप्रचलित है, उसके बदल जाने पर System.Configuration द्वारा System.Configuration.ConfigurationManager.AppSettings '

क्योंकि आप इस प्रकार एक पुराने परियोजना आप बहुत समय बचा सकते हैं उन्नत कर रहे हैं:

  1. अपने संदर्भ अनुभाग के संदर्भ के रूप में System.Configuration जोड़ें।
  2. प्रत्येक वर्ग (.cs) फ़ाइल के शीर्ष करने के लिए निम्न दो using बयान जोड़ें:

    using System.Configuration; using ConfigurationSettings = System.Configuration.ConfigurationManager;

इस परिवर्तन से

की सभी आवृत्तियां
ConfigurationSettings.AppSettings["mySetting"] 

अब दर्शाएंगे सही विन्यास प्रबंधक, अब बहिष्कृत नहीं है, और सभी CS0618 चेतावनियां तुरंत चली जाएंगी।

बेशक, ध्यान रखें कि यह एक त्वरित हैक है। लंबी अवधि में, आपको कोड को दोबारा करने पर विचार करना चाहिए।

0

का समाधान करने के लिए इस समस्या को समाधान एक्सप्लोरर और राइट क्लिक संदर्भ में जाना और संदर्भ जोड़ने के लिए क्लिक करें और .net चुना है और System.Configuration एक क्लिक ठीक

11

इस जवाब को जोड़ने का चयन लगता है, के रूप में सुझाव दिया समाधान में से कोई भी मेरे लिए काम करता ।

  1. संदर्भ जोड़ने के लिए संदर्भ टैब पर राइट-क्लिक करें।सभाओं टैब पर
  2. 'पर क्लिक करें System.Configuration'
  3. ठीक क्लिक करें के लिए
  4. खोजें।
संबंधित मुद्दे