名称'ConfigurationManager'在当前上下文中不存在

我试图从配置文件中访问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=&quot;Data Source=localhost;Initial Catalog=qbank;Persist Security Info=True;User ID=**;Password=****;MultipleActiveResultSets=True&quot;" providerName="System.Data.EntityClient" />
</connectionStrings>
</configuration>
577582 次浏览

您确定添加了对.NET程序集的引用,而不是其他内容吗?我会删除你的引用,然后尝试重新添加它,确保你从Visual Studio引用对话框中的. net选项卡中选择-最新版本应该是2.0.0.0。

为了进行完整性检查,尝试创建一个新的Web应用程序项目,打开默认的后面的代码。aspx页面。在Page_Load中添加一行以访问连接字符串。

它应该有System。默认情况下添加为参考的配置。您还应该在代码文件的顶部看到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>

是的,我知道这很初级。但如果你没有任何更好的想法,有时检查一些你知道应该有效的简单方法会有所帮助。

好吧. .重启VSTS后正常工作。链接给出了同样问题的解决方案。真希望我能早点看到。:)

它不仅需要使用名称空间 System.Configuration。你还必须添加对组装 System.Configuration.dll的引用,通过

  1. 右键单击引用/依赖关系
  2. 选择添加引用
  3. 找到并添加System.Configuration
这肯定会起作用。 同样,对于NameValueCollection,你必须写:

using System.Collections.Specialized;

我已经得到了一个更好的解决方案的问题configurationmanager does not exist in the current context

要从web.config读取连接字符串,我们需要使用ConfigurationManager类及其方法。如果你想使用,你需要使用System.Configuration添加命名空间;

虽然你使用了这个命名空间,但当你尝试使用ConfigurationManager类时,系统会显示一个错误“configurationmanager不存在于当前上下文中”。 解决方法:

ConfigurationManager.ConnectionStrings["ConnectionSql"].ConnectionString;

如果此代码在单独的项目中,如库项目。 不要忘记给system.configuration添加引用

如果您错误地添加了对不同的、不相关的项目的引用,也可能会得到此错误。看看这是否适用于你。

在您的项目中,右键单击。net选项卡中的添加引用…,找到System.Configuration组件名称并单击确定。

using System.Configuration告诉编译器/智能感知在该命名空间中搜索你使用的任何类。否则,每次都必须使用全名(System.Configuration.ConfigurationManager)。但是如果不添加引用,则在任何地方都找不到该名称空间/类。

请注意,DLL可以有任何名称空间,因此文件System.Configuration.dll理论上可以有名称空间Some.Random.Name。对于清晰度/一致性,它们通常是相同的,但也有例外。

如果你得到了很多警告(在我的例子中,一个解决方案中有64个!

CS0618:“ConfigurationSettings。这个方法已经过时了,它已经被System.Configuration!System.Configuration. configurationmanager .AppSettings所取代。

因为你正在升级一个旧的项目,你可以节省很多时间,如下所示:

  1. 添加System.Configuration作为参考文献部分的引用。
  2. 将以下两个using语句添加到每个class (.cs)文件的顶部:

    使用System.Configuration < p > <代码>; using ConfigurationSettings = System.Configuration.ConfigurationManager;

  3. . using ConfigurationSettings = System.Configuration.ConfigurationManager

由此变化所发生的一切

ConfigurationSettings.AppSettings["mySetting"]

现在将引用正确的配置管理器,不再是已弃用的配置管理器,并且所有CS0618警告将立即消失。

当然,请记住,这是一个快速的hack。从长远来看,您应该考虑重构代码。

要解决这个问题,请打开解决方案资源管理器,右键单击引用,然后单击添加引用,选择。net,然后查找系统。配置选择单击确定

加上这个答案,因为建议的解决方案都不适合我。

  1. 右键单击引用选项卡添加引用。
  2. 单击“程序集”选项卡
  3. 搜索“系统”。配置的
  4. 单击OK。
  1. 右键单击项目
  2. 选择管理器NuGet包
  3. 发现系统。配置
  4. 选择Microsoft的System.Configuration.ConfigurationManager
  5. 安装

现在你可以:

using System.Configuration;

添加System.Configuration作为所有项目的引用将解决这个问题。

  1. Project -> Add Reference

  2. 在出现的框中,单击左侧列表中的All assemblies列表选项卡。

  3. 在中央列表中,滚动到System.Configuration并确保复选框已选中。

  4. 单击确定以应用,现在您将能够访问ConfigurationManager类。

只需安装

Install-Package System.Configuration.ConfigurationManager -Version 4.5.0

然后使用

using 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 configuration (web.config)的配置管理器已过时。 所以看到https://learn.microsoft.com/en-us/dotnet/api/system.configuration.configurationmanager.appsettings?redirectedfrom=MSDN&view=dotnet-plat-ext-3.1#System_Configuration_ConfigurationManager_AppSettings

创建一个Settings的实例

var appSettings = ConfigurationManager.AppSettings;

针对Visual Studio 2019

右键单击项目,去管理NuGet包。

enter image description here

搜索System。配置并安装System.Configuration.ConfigurationManager

enter image description here

现在在您的代码中,配置管理器将被识别。

enter image description here

如果你正在使用实体框架核心,另一种解决方案可以如下:

  1. 右键单击项目并选择“管理Nuget包”
  2. 在“浏览”选项卡上,搜索“Z.EntityFramework.Extensions.EFCore”
  3. 安装包,'using System.Configuration;'将是 李自动添加。< / >