名称'ConfigurationManager'在当前上下文中不存在
我正在尝试从configuration文件访问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; } } } }
configuration:
<?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>
不仅需要使用命名空间 System.Configuration
。 您还需要添加对组件 System.Configuration.dll
的引用,方法是右键单击References选项卡,selectadd reference,然后findSystem.Configuration。 这将工作肯定。 也为NameValueCollection
你必须写:
using System.Collections.Specialized;
在您的项目中,右键单击“ 添加引用…” ,在“.NET”选项卡中find“ System.Configuration
组件名称,然后单击“确定”。
using System.Configuration
通知编译器/ IntelliSense在该命名空间中search您使用的任何类。 否则,您将不得不每次都使用全名( System.Configuration.ConfigurationManager
)。 但是如果你不添加引用,这个名字空间/类将不会在任何地方find。
请注意,一个DLL可以有任何命名空间,所以文件System.Configuration.dll
理论上可以有命名空间Some.Random.Name
。 为了清楚/一致,他们通常是相同的,但也有例外。
好的..重新启动VSTS后,它工作。 该链接为相同的问题提出了解决scheme。 希望我以前可以看到它。 🙂
我已经得到了一个更好的解决scheme, configurationmanager does not exist in the current context
。
要从web.config
读取连接string,我们需要使用ConfigurationManager
类及其方法。 如果你想使用你需要使用System.Configuration
添加命名空间;
尽pipe你使用了这个命名空间,但当你尝试使用ConfigurationManager
类的时候,系统显示错误“configurationpipe理器在当前上下文中不存在”。 为了解决这个问题:
ConfigurationManager.ConnectionStrings["ConnectionSql"].ConnectionString;
如果你得到了很多的警告(在我的情况下64解决scheme!)
CS0618:'ConfigurationSettings.AppSettings'已经过时:'这个方法已经过时了,已经被System.Configuration!System.Configuration.ConfigurationManager.AppSettings'
因为您正在升级较老的项目,所以可以节省大量时间,如下所示:
- 添加
System.Configuration
作为您的参考部分的参考 。 -
将以下两个
using
语句添加到每个类(.cs
)文件的顶部:using System.Configuration; using ConfigurationSettings = System.Configuration.ConfigurationManager;
通过这个改变所有的发生
ConfigurationSettings.AppSettings["mySetting"]
现在将引用正确的configurationpipe理器,不再是已弃用的configurationpipe理器,所有的CS0618警告将立即消失。
当然,请记住,这是一个快速的黑客攻击。 从长远来看,你应该考虑重构代码。
你确定你已经添加了对.NET程序集的引用,而不是别的吗? 我将删除您的引用,然后尝试重新添加它,确保您从Visual Studio参考对话中的.NET选项卡中select – GAC中的最新版本应为2.0.0.0。
为了进行健全性检查,请尝试创build一个新的Web应用程序项目,打开Default.aspx页面后面的代码。 在Page_Load中添加一行以访问您的连接string。
它应该有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中的连接string与名称等于“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的引用。
如果您错误地添加了对不同的,不相关的项目的引用,您也可能会遇到此错误。 检查是否适用于你。
要解决这个问题去解决scheme资源pipe理器然后右键单击引用并单击添加引用并select.net并findsystem.configurationselect一个单击确定
添加这个答案,因为没有build议的解决scheme适合我。
- 右键单击参考选项卡以添加参考。
- 点击Assemblies选项卡
- search“System.Configuration”
- 点击OK。