Имя '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>
693   12  

12 ответов:

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

  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. Для ясности / согласованности они обычно одинаковы, но есть исключения.

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

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

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

я получил лучшее решение для вопроса 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 reference-последняя версия должна быть 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;
    }
  }
}

это предполагает, что у меня есть строка подключения в моей паутине.конфигурация с именем, равным "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>

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

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

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

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

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

Comments

    Ничего не найдено.