我正在尝试从配置文件访问 connectionStrings
。代码是 ASP.NET + C#。我已将 System.Configuration
添加到引用中,并且还提到了 using。但它仍然不接受大会。
我正在使用 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>
不仅需要使用 命名空间 System.Configuration
。您还必须添加对 assembly System.Configuration.dll
的引用,方法是
右键单击 References / Dependencies 选择 Add Reference Find 并添加 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后它工作了。 link 针对同一问题提出了解决方案。希望我以前能看到它。 :)
添加 System.Configuration
作为对所有项目的引用将解决此问题。
转到 Project -> Add Reference 在出现的框中,单击左侧列表中的所有程序集列表选项卡。在中央列表中,滚动到 System.Configuration 并确保选中该框。单击确定应用,您现在将能够访问 ConfigurationManager 类。
using System.Configuration;
添加此答案,因为建议的解决方案都不适合我。
右键单击引用选项卡以添加引用。单击“程序集”选项卡搜索“System.Configuration”单击“确定”。
只需安装
Install-Package System.Configuration.ConfigurationManager -Version 4.5.0
然后使用
using System.Configuration;
dotnet add package System.Configuration.ConfigurationManager
才能使其正常工作。
右键单击项目选择管理器 NuGet 包查找 System.Configuration 选择 Microsoft Install 的 System.Configuration.ConfigurationManager
现在你可以:
using System.Configuration;
如果您收到很多警告(在我的情况下是 64 个解决方案!),例如
CS0618:“ConfigurationSettings.AppSettings”已过时:“此方法已过时,已被 System.Configuration!System.Configuration.ConfigurationManager.AppSettings 取代”
因为您正在升级旧项目,所以可以节省大量时间,如下所示:
添加 System.Configuration 作为参考部分的参考。将以下两个 using 语句添加到每个类 (.cs) 文件的顶部: using System.Configuration;使用 ConfigurationSettings = System.Configuration.ConfigurationManager;
通过这种变化,所有的发生
ConfigurationSettings.AppSettings["mySetting"]
现在将引用正确的配置管理器,不再是已弃用的配置管理器,并且所有 CS0618 警告将立即消失。
当然,请记住,这是一个快速破解。从长远来看,您应该考虑重构代码。
我已经为问题 configurationmanager does not exist in the current context
找到了更好的解决方案。
要从 web.config
读取连接字符串,我们需要使用 ConfigurationManager
类及其方法。如果要使用,需要使用 System.Configuration
添加命名空间;
尽管您使用了此命名空间,但当您尝试使用 ConfigurationManager
类时,系统会显示错误“当前上下文中不存在配置管理器”。要解决这个问题:
ConfigurationManager.ConnectionStrings["ConnectionSql"].ConnectionString;
您确定您添加了对 .NET 程序集的引用而不是其他内容吗?我会删除您的参考,然后尝试重新添加它,确保您从 Visual Studio 参考对话框中的 .NET 选项卡中选择 - GAC 中的最新版本应该是 2.0.0.0。
要进行完整性检查,请尝试创建一个新的 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>
是的,我知道这是初级的。但是,如果你没有更好的想法,有时它有助于检查一些你知道应该工作的非常简单的东西。
对于 Visual Studio 2019
右键单击项目并转到管理 NuGet 包。
https://i.stack.imgur.com/diaZb.png
搜索 System.Configuraion 并安装 System.Configuration.ConfigurationManager
https://i.stack.imgur.com/xUCAl.png
现在在您的代码中,配置管理器将被识别。
https://i.stack.imgur.com/4naPz.png
如果此代码位于单独的项目中,例如库项目。不要忘记添加对 system.configuration 的引用。
如果您错误地添加了对不同的、不相关的项目的引用,您也可能会收到此错误。检查这是否适用于您。
要解决此问题,请转到解决方案资源管理器并右键单击参考并单击添加参考并选择 .net 并找到 system.configuration 选择单击确定
添加配置管理器文件以连接到数据库 web.config
在 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();
...
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;