it-swarm.com.ru

Имя "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>
409
pencilslate

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

36
pencilslate

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

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

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

using System.Collections.Specialized;
758
Kieran

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

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

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

94
Rameez

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

  1. Щелкните правой кнопкой мыши на вкладке ссылок, чтобы добавить ссылку.
  2. Нажмите на вкладку Сборки
  3. Поиск 'System.Configuration' 
  4. Нажмите ОК.
17
Esther Lalremruati

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

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

Несмотря на то, что вы использовали это пространство имен, при попытке использовать класс ConfigurationManager система выдает ошибку «диспетчер конфигурации не существует в текущем контексте» . Чтобы решить эту проблему:

ConfigurationManager.ConnectionStrings["ConnectionSql"].ConnectionString; 
9
Emu

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

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

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

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

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

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

ConfigurationSettings.AppSettings["mySetting"]

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

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

8
Matt

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

6
Dan Diplo

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

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

4
Nevada

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

  1. Перейдите к Project -> Add Reference

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

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

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

4
calios

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

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

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

using System.Configuration;
1
Samir Morimoto

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

0
Ike

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

0
Keshav Patel