我正在尝试从配置文件中访问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; }
}
}
}
配置:
<?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>
答案 0 :(得分:771)
不仅需要使用命名空间 System.Configuration
。您还必须通过
System.Configuration.dll
的引用
System.Configuration
。 这肯定会奏效。
同样对于NameValueCollection
你必须写:
using System.Collections.Specialized;
答案 1 :(得分:94)
在您的项目中,右键单击添加引用... ,在.NET选项卡中,找到System.Configuration
组件名称,然后单击“确定”。
using System.Configuration
告诉编译器/ IntelliSense在该命名空间中搜索您使用的任何类。否则,您每次都必须使用全名(System.Configuration.ConfigurationManager
)。但是如果你不添加引用,那么在任何地方都找不到该命名空间/类。
请注意,DLL可以具有任何名称空间,因此理论上文件System.Configuration.dll
可以具有名称空间Some.Random.Name
。为了清晰/一致,它们通常是相同的,但也有例外。
答案 2 :(得分:36)
好的..重新启动VSTS后它可以正常工作。 link提出了针对同一问题的解决方案。希望我以前见过它。 :)
答案 3 :(得分:17)
添加此答案,因为没有一个建议的解决方案适合我。
- 右键单击引用选项卡以添加引用。
- 单击“装配”选项卡
- 搜索“System.Configuration”
- 单击“确定”。
醇>
答案 4 :(得分:9)
我已经为问题configurationmanager does not exist in the current context
找到了更好的解决方案。
要从web.config
读取连接字符串,我们需要使用ConfigurationManager
类及其方法。如果您想使用,则需要使用System.Configuration
;
虽然您使用了此命名空间,但在尝试使用ConfigurationManager
类时,系统会显示错误“当前上下文中不存在configurationmanager”。
解决这个问题:
ConfigurationManager.ConnectionStrings["ConnectionSql"].ConnectionString;
答案 5 :(得分:9)
将System.Configuration
添加为所有项目的参考将解决此问题。
转到Project
-> Add Reference
在显示的框中,单击左侧列表中的All assemblies
列表标签。
在中央列表中,滚动到System.Configuration
并确保选中该框。
单击“确定”进行应用,您现在将可以访问ConfigurationManager
类。
答案 6 :(得分:8)
如果您收到很多警告(在我的情况下是64个解决方案!),如
CS0618:'ConfigurationSettings.AppSettings'已过时:'此方法已过时,已被System.Configuration取代!System.Configuration.ConfigurationManager.AppSettings'
因为您正在升级旧项目,所以可以节省大量时间,如下所示:
System.Configuration
作为参考部分的参考。将以下两个using
语句添加到每个类(.cs
)文件的顶部:
using System.Configuration;
using ConfigurationSettings = System.Configuration.ConfigurationManager;
通过这种改变所有出现的
ConfigurationSettings.AppSettings["mySetting"]
现在将引用正确的配置管理器,不再是已弃用的配置管理器,并且所有CS0618警告将立即消失。
当然,请记住,这是一个快速的黑客攻击。从长远来看,您应该考虑重构代码。
答案 7 :(得分:6)
您确定已添加对.NET程序集的引用而不是其他内容吗?我将删除您的引用,然后尝试重新添加它,确保您从Visual Studio参考对话框中的.NET选项卡中选择 - 最新版本应该是GAC中的2.0.0.0。
答案 8 :(得分:4)
要进行健全性检查,请尝试创建新的Web应用程序项目,打开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>
是的,我知道这是基本的。但是,如果你没有任何更好的想法,有时候检查你知道应该工作的非常简单的事情会有所帮助。
答案 9 :(得分:3)
现在您可以:
using System.Configuration;
答案 10 :(得分:1)
如果此代码位于单独的项目中,例如库项目。 不要伪造添加对system.configuration的引用。
答案 11 :(得分:1)
只需安装
Install-Package System.Configuration.ConfigurationManager -Version 4.5.0
然后使用
using System.Configuration;
答案 12 :(得分:0)
对于 Visual Studio 2019
右键单击项目并转到“管理 NuGet 包”。
搜索 System.Configuraion 并安装 System.Configuration.ConfigurationManager
现在在您的代码中,将识别配置管理器。
答案 13 :(得分:0)
Web配置(web.config)的配置管理器已过时。 所以看这个https://docs.microsoft.com/en-us/dotnet/api/system.configuration.configurationmanager.appsettings?redirectedfrom=MSDN&view=dotnet-plat-ext-3.1#System_Configuration_ConfigurationManager_AppSettings
创建设置实例
var appSettings = ConfigurationManager.AppSettings;
答案 14 :(得分:0)
在NetCore 3.1中,我不得不改用Microsoft.Extensions.Configuration
:
public static async Task Main(string[] args)
{
var configuration = new ConfigurationBuilder()
.SetBasePath(Directory.GetCurrentDirectory())
.AddJsonFile(path: "appsettings.json", optional: false, reloadOnChange: true)
.Build();
...
答案 15 :(得分:0)
添加配置管理器文件以连接到数据库web.config
答案 16 :(得分:0)
要解决此问题,请转到解决方案资源管理器并右键单击引用,然后单击添加引用并选择.net并查找system.configuration选择单击确定
答案 17 :(得分:0)
如果您错误地添加对其他不相关项目的引用,也可能会出现此错误。检查这是否适用于您。