Имя "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
имя компонента и нажмите OK.
using System.Configuration
указывает компилятору / IntelliSense искать в этом пространстве имен любые используемые классы. В противном случае вам придется использовать полное имя (System.Configuration.ConfigurationManager
) каждый раз. Но если вы не добавите ссылку, это пространство имен / класс нигде не будет найдено.
обратите внимание, что DLL может иметь любое пространство имен, поэтому файл System.Configuration.dll
может, в теория, есть пространство имен Some.Random.Name
. Для ясности / согласованности они обычно одинаковы, но есть исключения.
Ok.. он работал после перезапуска VSTS. The ссылке предложил решение той же проблемы. Жаль, что я не видел его раньше. :)
добавление этого ответа, поскольку ни одно из предложенных решений не работает для меня.
- щелкните правой кнопкой мыши на вкладку Ссылки добавить ссылку.
- нажмите на вкладку сборки
- поиск системы.Конфигурация'
- нажмите OK.
я получил лучшее решение для вопроса 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 - последняя версия должна быть 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;
}
}
}
предполагается, что у меня есть строка подключения в моем 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>
Да, это элементарно, я знаю. Но если у вас нет лучших идей, иногда это помогает проверить что-то действительно простое, что, как вы знаете, должно работать.
Если этот код находится в отдельном проекте, например в проекте библиотеки. Не forgeet чтобы добавить ссылку на System.конфигурация.
вы также можете получить эту ошибку, если вы добавите ссылку на другой, несвязанный проект по ошибке. Проверьте, относится ли это к вам.
чтобы решить эту проблему, перейдите в Обозреватель решений и щелкните правой кнопкой мыши ссылку и нажмите кнопку Добавить ссылку и выберите .net и найти систему.конфигурация выберите кнопку ok
- щелкните правой кнопкой мыши на Project
- Выберите Manager NuGet Package
- Найти Систему.Конфигурация
- Выберите Система.Конфигурация.ConfigurationManager от Microsoft
- установить
using System.Configuration;