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

Я пытаюсь получить доступ к connectionStrings из файла конфигурации. Код - это ASP.NET + С#. Я добавил 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; }
        }  
    }  
}

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>

Ответ 1

Хорошо, он работал после перезапуска VSTS. Ссылка

Ответ 2

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

  • Щелкните правой кнопкой мыши ссылку/зависимости
  • Выберите Добавить ссылку
  • Найдите и добавьте System.Configuration.

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

using System.Collections.Specialized;

Ответ 3

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

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

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

Ответ 4

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

  • Щелкните правой кнопкой мыши по ссылке, чтобы добавить ссылку.
  • Перейдите на вкладку Ассемблирование
  • Поиск 'System.Configuration'
  • Нажмите "ОК".

Ответ 5

Добавление System.Configuration в качестве ссылки на все проекты решит эту проблему.

  1. Перейти к ProjectAdd Reference

  2. В появившемся окне щелкните вкладку списка All assemblies в списке слева.

  3. В центральном списке выделите System.Configuration и убедитесь, что флажок установлен.

  4. Нажмите кнопку ОК, чтобы подать заявку, и теперь вы сможете получить доступ к классу ConfigurationManager.

Ответ 6

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

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

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

ConfigurationManager.ConnectionStrings["ConnectionSql"].ConnectionString; 

Ответ 7

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

CS0618: "ConfigurationSettings.AppSettings" устарел: "Этот метод устарел, он был заменен на System.Configuration! System.Configuration.ConfigurationManager.AppSettings"

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

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

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

В результате этого изменения все события

ConfigurationSettings.AppSettings["mySetting"]

теперь обратится к правильному диспетчеру конфигурации, больше не относится к устаревшему, и все предупреждения CS0618 немедленно исчезнут.

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

Ответ 8

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

Ответ 9

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

Он должен иметь значение System.Configuration, добавленное по умолчанию. Вы также должны увидеть оператор 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>

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

Ответ 10

  1. Щелкните правой кнопкой мыши на Project
  2. Выберите менеджер пакета NuGet
  3. Найти System.Configuration
  4. Выберите System.Configuration.ConfigurationManager от Microsoft
  5. Установить

Теперь вы можете:

using System.Configuration;

Ответ 11

Если этот код находится в отдельном проекте, например, в проекте библиотеки. Не используйте forgeet для добавления ссылки на system.configuration.

Ответ 12

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

Ответ 13

Чтобы решить эту проблему, перейдите в Обозреватель решений и щелкните правой кнопкой мыши ссылку и нажмите ссылку на ссылку и выберите .net и найдите system.configuration, выберите команду ok

Ответ 14

Просто установите

Install-Package System.Configuration.ConfigurationManager -Version 4.5.0

затем используйте

using System.Configuration;