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

Я пытаюсь получить доступ 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; }
        }  
    }  
}

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>

19 ответов

Решение

Хорошо.. это работало после перезапуска VSTS. Ссылка предложила решение той же проблемы. Хотел бы я видеть это раньше.:)

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

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

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

using System.Collections.Specialized;

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

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

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

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

  1. Идти к Project -> Add Reference

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

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

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

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

Install-Package System.Configuration.ConfigurationManager -Version 4.5.0

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

using System.Configuration;

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

  1. Щелкните правой кнопкой мыши на вкладке ссылок, чтобы добавить ссылку.
  2. Нажмите на вкладку Сборки
  3. Поиск 'System.Configuration'
  4. Нажмите ОК.
  1. Щелкните правой кнопкой мыши на Project
  2. Выберите менеджер NuGet Package
  3. Найти System.Configuration
  4. Выберите System.Configuration.ConfigurationManager от Microsoft
  5. устанавливать

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

using System.Configuration;

Я получил лучшее решение для этой проблемы configurationmanager does not exist in the current context,

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

Хотя вы использовали это пространство имен, когда вы пытаетесь использовать ConfigurationManager В этом случае система показывает ошибку "Менеджер конфигурации не существует в текущем контексте". Для решения этой проблемы:

ConfigurationManager.ConnectionStrings["ConnectionSql"].ConnectionString; 

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

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

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

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

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

Этим изменяются все вхождения

ConfigurationSettings.AppSettings["mySetting"]

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

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

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

Для Visual Studio 2019

Щелкните правой кнопкой мыши проект и перейдите в раздел «Управление пакетами NuGet».

Найдите System.Configuraion и установите System.Configuration.ConfigurationManager

Теперь в вашем коде будет распознан диспетчер конфигурации.

Для проверки работоспособности попробуйте создать новый проект веб-приложения, откройте код для страницы 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>

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

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

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

В NetCore 3.1 мне пришлось использовать Microsoft.Extensions.Configuration вместо:

    public static async Task Main(string[] args)
    {
        var configuration = new ConfigurationBuilder()
            .SetBasePath(Directory.GetCurrentDirectory())
            .AddJsonFile(path: "appsettings.json", optional: false, reloadOnChange: true)
            .Build();

...

Если вы используете Entity Framework Core, альтернативное решение может быть следующим:

  1. Щелкните правой кнопкой мыши проект и выберите «Управление пакетами Nuget».
  2. На вкладке «Обзор» найдите «Z.EntityFramework.Extensions.EFCore».
  3. Установите пакет и «используя System.Configuration;» будут добавлены автоматически.

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

Добавьте файл диспетчера конфигураций для подключения к базе данных web.config

Диспетчер конфигурации веб-конфигурации (web.config) устарел. Так что см. Https://docs.microsoft.com/en-us/dotnet/api/system.configuration.configurationmanager.appsettings?redirectedfrom=MSDN&view=dotnet-plat-ext-3.1#System_Configuration_ConfigurationManager_AppSettings

создать экземпляр настроек

var appSettings = ConfigurationManager.AppSettings;
Другие вопросы по тегам