Имя "ConfigurationManager" не существует в текущем контексте

Я пытаюсь получить доступ к connectionStrings из файла config. Код ASP.NET + C#. Я добавил System.Configuration для ссылки, а также упоминается с использованием. Но он все равно не принял бы собрание.

Я использую VSTS 2008. Есть идеи, что могло быть причиной?

еще одна странная вещь-это имя сборки, показанное как " System.конфигурация", нижний регистр 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; }
        }  
    }  
}

Config:

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

12 ответов


Это не только нужно использовать пространство имен System.Configuration. Вы также должны добавить ссылку на сборка System.Configuration.dll, by

  1. щелкните правой кнопкой мыши на Ссылки / Зависимостей
  2. выбрать Добавить Ссылку
  3. найти и добавить System.Configuration.

это будет работать точно. Также для NameValueCollection вы должны написать:

using System.Collections.Specialized;

в вашем проекте щелкните правой кнопкой мыши,Добавить Ссылку..., на вкладке .NET найдите System.Configuration имя компонента и нажмите OK.

using System.Configuration указывает компилятору / IntelliSense искать в этом пространстве имен любые используемые классы. В противном случае вам придется использовать полное имя (System.Configuration.ConfigurationManager) каждый раз. Но если вы не добавите ссылку, это пространство имен / класс нигде не будет найдено.

обратите внимание, что DLL может иметь любое пространство имен, поэтому файл System.Configuration.dll может, в теория, есть пространство имен Some.Random.Name. Для ясности / согласованности они обычно одинаковы, но есть исключения.


Ok.. он работал после перезапуска VSTS. The ссылке предложил решение той же проблемы. Жаль, что я не видел его раньше. :)


добавление этого ответа, поскольку ни одно из предложенных решений не работает для меня.

  1. щелкните правой кнопкой мыши на вкладку Ссылки добавить ссылку.
  2. нажмите на вкладку сборки
  3. поиск системы.Конфигурация'
  4. нажмите OK.

я получил лучшее решение для вопроса configurationmanager does not exist in the current context.

для чтения строки подключения из web.config нужно использовать ConfigurationManager класс и его метод. Если вы хотите использовать, вам нужно добавить пространство имен с помощью System.Configuration;

хотя вы использовали это пространство имен, при попытке использовать ConfigurationManager класс тогда система показывает ошибку "configurationmanager не существует в текущем контексте". Чтобы решить эту проблему:

ConfigurationManager.ConnectionStrings["ConnectionSql"].ConnectionString; 

если вы получаете много предупреждений (в моем случае 64 в растворе!) как

CS0618: 'ConfigurationSettings.AppSettings "устарел:" этот метод устарел, он был заменен системой.Конфигурация!Система.Конфигурация.Диспетчер конфигураций.Параметр appsettings'

потому что вы обновляете старый проект, вы можете сэкономить много времени следующим образом:

  1. добавить System.Configuration как ссылка на ваш ссылки раздел.
  2. добавить следующие два using операторы в верхней части каждого класса (.cs) файл:

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

этим изменением все явления

ConfigurationSettings.AppSettings["mySetting"]

теперь будет ссылаться на правильный configuration manager, больше не устаревший, и все предупреждения CS0618 немедленно исчезнут.

конечно, имейте в виду, что это быстрый взлом. В долгосрочной перспективе вы должны рассмотреть рефакторинг код.


вы уверены, что добавили ссылку на сборку .NET, а не что-то еще? Я бы удалил вашу ссылку, а затем попытался повторно добавить ее, убедившись, что вы выбираете на вкладке .NET в диалоге ссылок Visual Studio - последняя версия должна быть 2.0.0.0 в GAC.


для проверочной, попробуйте создать новый проект веб-приложения, откройте код по умолчанию.страница ASPX. Добавьте строку в Page_Load для доступа к строке подключения.

Он должен иметь систему.Конфигурация добавлена в качестве ссылки по умолчанию. Вы также должны увидеть оператор using в верхней части файла кода уже.

мой код за файл теперь выглядит так и компилируется без проблем.

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>

Да, это элементарно, я знаю. Но если у вас нет лучших идей, иногда это помогает проверить что-то действительно простое, что, как вы знаете, должно работать.


Если этот код находится в отдельном проекте, например в проекте библиотеки. Не forgeet чтобы добавить ссылку на System.конфигурация.


вы также можете получить эту ошибку, если вы добавите ссылку на другой, несвязанный проект по ошибке. Проверьте, относится ли это к вам.


чтобы решить эту проблему, перейдите в Обозреватель решений и щелкните правой кнопкой мыши ссылку и нажмите кнопку Добавить ссылку и выберите .net и найти систему.конфигурация выберите кнопку ok


  1. щелкните правой кнопкой мыши на Project
  2. Выберите Manager NuGet Package
  3. Найти Систему.Конфигурация
  4. Выберите Система.Конфигурация.ConfigurationManager от Microsoft
  5. установить
вы можете:
using System.Configuration;