वर्तमान संदर्भ में 'कॉन्फ़िगरेशन मैनजर' नाम मौजूद नहीं है


468

मैं connectionStringsकॉन्फ़िगर फ़ाइल से एक्सेस करने का प्रयास कर रहा हूं । कोड ASP.NET + C # है। मैंने System.Configurationसंदर्भ में जोड़ा है और उपयोग करने के साथ भी उल्लेख किया है। लेकिन फिर भी यह विधानसभा को स्वीकार नहीं करेगा।

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

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

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
क्या आप कुछ कोड जोड़ सकते हैं? इसका क्या मतलब है कि यह विधानसभा को स्वीकार नहीं करेगा? क्या आपको एक विशिष्ट त्रुटि संदेश मिल रहा है?
जोशुआ बेल्डेन

जवाबों:


820

यह न केवल नामस्थान का उपयोग करने के लिए आवश्यक है System.Configuration। आप के संदर्भ में जोड़ने के लिए भी है विधानसभा System.Configuration.dll , द्वारा

  1. संदर्भ / निर्भरता पर राइट-क्लिक करें
  2. संदर्भ जोड़ें चुनें
  3. खोजें और जोड़ें System.Configuration

यह सुनिश्चित करने के लिए काम करेगा। इसके लिए भी NameValueCollectionआपको लिखना होगा:

using System.Collections.Specialized;

1
+1 धन्यवाद किरन। क्या आप जानते हैं कि ऐसा क्यों करना पड़ता है जब अधिकांश अन्य विधानसभाओं को केवल 'का उपयोग कर' बयान सहित बुलाया जा सकता है?
बजे

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

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

4
'System.Configuration' नेमस्पेस 'System' dll में पाया जा सकता है, इसीलिए जब Intellisense 'System.Configuration;' जब तक System.Configuration.dll प्रोजेक्ट द्वारा संदर्भित नहीं किया जाता है, तब तक कॉन्फ़िगरेशन प्रबंधक नहीं मिलेगा।
20

99

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

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

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


40

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


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

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

1
); @ ggiaquin16 आप अंक मिलता है नहीं करता है, तो आप अपने आप को स्वीकार करते हैं
JAD

@ कालियोज या यदि आप मूल प्रश्न को पढ़ते हैं तो आप देख सकते हैं कि प्रश्नकर्ता ने प्रश्न के पहले संस्करण में असेंबली को पहले ही प्रोजेक्ट में जोड़ दिया था। वीएस के इस विशेष असेंबली और संस्करण के लिए आईडीई को पुनरारंभ करना आवश्यक था या त्रुटि बस होती रहेगी। यही उपाय था। यहाँ दो उच्च श्रेणी निर्धारण उत्तर वास्तव में पूछे जाने वाले प्रश्न के लिए प्रासंगिक नहीं थे, लेकिन आप आश्चर्यचकित नहीं होंगे कि कोई व्यक्ति पहले प्रश्न को पढ़े बिना क्यों उत्तर देगा। (केवल इस मामले में बहुत प्रभावी प्रतीत होने वाले बिंदुओं के लिए चीजें करने की नस में ...)
एरोब्रॉन

24

System.Configurationसभी परियोजनाओं के संदर्भ के रूप में जोड़ने से यह हल हो जाएगा।

  1. Project-> पर जाएंAdd Reference

  2. दिखाई देने वाले बॉक्स All assembliesमें, बाएं हाथ की सूची में सूची टैब पर क्लिक करें ।

  3. केंद्रीय सूची में, स्क्रॉल करें System.Configurationऔर सुनिश्चित करें कि बॉक्स को चेक किया गया है।

  4. आवेदन करने के लिए ओके पर क्लिक करें, और अब आप ConfigurationManagerकक्षा में प्रवेश कर पाएंगे ।


19

इस उत्तर को जोड़ना, क्योंकि सुझाए गए समाधानों में से कोई भी मेरे लिए काम नहीं करता है।

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

9

अगर आपको बहुत सी चेतावनियाँ मिल रही हैं (मेरे मामले में ६४ समाधान में!) जैसे

CS0618: 'configurationSettings.AppSettings' अप्रचलित है: 'यह विधि अप्रचलित है, इसे System.Configuration! System.Configuration.ConfigurationManager.AppSings' द्वारा प्रतिस्थापित कर दिया गया है!

क्योंकि आप एक पुराने प्रोजेक्ट को अपग्रेड कर रहे हैं, जिससे आप बहुत समय बचा सकते हैं:

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

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

इस परिवर्तन से सभी घटनाएँ घटती हैं

ConfigurationSettings.AppSettings["mySetting"]

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

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


9

मैं इस मुद्दे के लिए एक बेहतर समाधान मिल गया है configurationmanager does not exist in the current context

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

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

ConfigurationManager.ConnectionStrings["ConnectionSql"].ConnectionString; 

6

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


संपत्ति विंडो से असेंबली विवरण: नाम: System.configuration Path: C: \ Windows \ Microsoft.NET \ Framework \ v2.0.50727 \ System.configuration.dll संस्करण: 2.0.0.0 रनटाइम संस्करण: v2.0.50727 कुछ भी संदिग्ध लगता है? धन्यवाद!
पेंसिल

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

6
  1. प्रोजेक्ट पर राइट-क्लिक करें
  2. प्रबंधक NuGet पैकेज का चयन करें
  3. System.Configuration खोजें
  4. Microsoft द्वारा System.Configuration.ConfigurationManager का चयन करें
  5. इंस्टॉल

अब आप कर सकते हैं:

using System.Configuration;

4

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

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

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

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;
    }
  }
}

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

<?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>

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



2

यदि यह कोड एक अलग प्रोजेक्ट पर है, जैसे लाइब्रेरी प्रोजेक्ट। System.configuration के संदर्भ को जोड़ने के लिए forgeet न करें।


0

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


0

इस समस्या को हल करने के लिए सॉल्यूशन एक्सप्लोरर पर जाएं और रेफरेंस राइट क्लिक करें और रेफरेंस ऐड करें पर क्लिक करें। नेट खोजें और system.configuration को क्लिक ओके चुनें


0

डेटाबेस web.config से कनेक्ट करने के लिए कॉन्फ़िगरेशन प्रबंधक फ़ाइल जोड़ें

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.