Имя '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="Data Source=localhost;Initial Catalog=qbank;Persist Security Info=True;User ID=**;Password=****;MultipleActiveResultSets=True"" providerName="System.Data.EntityClient" />
</connectionStrings>
</configuration>
12 ответов:
Это не только нужно использовать пространство имен
System.Configuration. Вы также должны добавить ссылку на сборкаSystem.Configuration.dll, by
- щелкните правой кнопкой мыши на Ссылки / Зависимостей
- выбрать Добавить Ссылку
- найти и добавить
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. Элемент ссылке предложил решение для той же проблемы. Жаль, что я не видел его раньше. :)
добавление этого ответа, поскольку ни одно из предложенных решений не работает для меня.
- щелкните правой кнопкой мыши на вкладку Ссылки добавить ссылку.
- перейдите на вкладку сборки
- поиск ' системы.Конфигурация'
- Нажмите кнопку ОК.
я получил лучшее решение для вопроса
configurationmanager does not exist in the current context.для чтения строки подключения из
web.configнужно использоватьConfigurationManagerкласс и его метод. Если вы хотите использовать вам нужно добавить пространство имен с помощьюSystem.Configuration;хотя вы использовали это пространство имен, при попытке использовать
ConfigurationManagerкласс тогда система показывает ошибку "configurationmanager не существует в текущем контексте". Чтобы решить эту проблему:ConfigurationManager.ConnectionStrings["ConnectionSql"].ConnectionString;
если вы получаете много предупреждений (в моем случае 64 в растворе!) как
CS0618: 'ConfigurationSettings.AppSettings "устарел:" этот метод устарел, он был заменен системой.Конфигурация!Система.Конфигурация.Диспетчер конфигураций.AppSettings'
потому что вы обновляете старый проект, вы можете сэкономить много времени следующим образом:
- добавить
System.Configurationкак ссылка на ваш ссылки раздел.добавить следующие два
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 и найти систему.конфигурация выберите нажмите кнопку ОК
вы можете:
- щелкните правой кнопкой мыши на проекте
- Выберите Менеджер NuGet Package
- Найти Систему.Конфигурация
- Выберите Система.Конфигурация.ConfigurationManager от Microsoft
- установить
using System.Configuration;
Comments