代码之家  ›  专栏  ›  技术社区  ›  pencilslate

当前上下文中不存在名称“configurationmanager”

  •  411
  • pencilslate  · 技术社区  · 15 年前

    我正试图进入 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=&quot;Data Source=localhost;Initial Catalog=qbank;Persist Security Info=True;User ID=**;Password=****;MultipleActiveResultSets=True&quot;" providerName="System.Data.EntityClient" />
      </connectionStrings>
    </configuration>
    
    13 回复  |  直到 15 年前
        1
  •  758
  •   Kieran    6 年前

    不仅需要使用 命名空间 System.Configuration . 您还必须将引用添加到 装配 System.Configuration.dll 通过

    1. 右键单击 引用/依赖项
    2. 选择 添加引用
    3. 查找并添加 系统配置 .

    这肯定有效。 也为 NameValueCollection 你必须写:

    using System.Collections.Specialized;
    
        2
  •  94
  •   David Ferenczy Rogožan Hugo L.M    7 年前

    在项目中,右键单击, 添加引用… ,在.NET选项卡中,找到 System.Configuration 组件名称,然后单击“确定”。

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

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

        3
  •  36
  •   pencilslate    15 年前

    好啊。。它在重启VST后工作。这个 link 为同一个问题提出了解决方案。希望我以前能看到它。:)

        4
  •  17
  •   Esther Lalremruati    7 年前

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

    1. 右键单击“引用”选项卡以添加引用。
    2. 单击“部件”选项卡
    3. 搜索“system.configuration”
    4. 单击确定。
        5
  •  9
  •   Josh Gallagher Red Romanov    7 年前

    我已经为这个问题找到了更好的解决办法 configurationmanager does not exist in the current context .

    到读取连接字符串 web.config 我们需要使用 ConfigurationManager 类及其方法。如果要使用,则需要使用 System.Configuration ;

    尽管您使用了此命名空间,但当您尝试使用 配置管理器 类,然后系统显示错误__configurationManager在当前上下文__中不存在。 要解决此问题:

    ConfigurationManager.ConnectionStrings["ConnectionSql"].ConnectionString; 
    
        6
  •  8
  •   Matt    8 年前

    如果您收到很多警告(在我的案例64中是一个解决方案!)喜欢

    cs0618:“configurationsettings.appsettings”已过时:“此方法已过时,已被System.configuration替换!”system.configuration.configurationmanager.appsettings'

    由于要升级旧项目,因此可以节省大量时间,如下所示:

    1. 添加 System.Configuration 作为您的参考 工具书类 第节。
    2. 加上以下两个 using 每个类顶部的语句( .cs 文件:

      using System.Configuration; using ConfigurationSettings = System.Configuration.ConfigurationManager;

    根据这一变化

    ConfigurationSettings.AppSettings["mySetting"]
    

    现在将引用正确的配置管理器,不再是不推荐使用的配置管理器,所有CS0618警告都将立即消失。

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

        7
  •  6
  •   Dan Diplo    15 年前

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

        8
  •  4
  •   Nevada    15 年前

    要进行健全性检查,请尝试创建新的Web应用程序项目,打开default.aspx页面的代码隐藏。在页面加载中添加一行以访问连接字符串。

    默认情况下,它应该添加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
  •  4
  •   WonderWorker Sakal    6 年前

    添加 System.Configuration 作为参考,所有的项目都能解决这个问题。

    1. Project -gt; Add Reference

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

    3. 在中央列表中,滚动至 系统配置 并确保选中该框。

    4. 单击“确定”应用,您现在可以访问 ConfigurationManager 班级。

        10
  •  1
  •   Steve Rey    13 年前

    如果此代码位于单独的项目上,例如库项目。 不要伪造以添加对System.Configuration的引用。

        11
  •  1
  •   Stephen Rauch Madhusudan Sharma    6 年前
    1. 右键单击项目
    2. Select Manager Nuget包
    3. 查找系统配置
    4. 选择System.Configuration.ConfigurationManager by Microsoft
    5. 安装

    现在你可以:

    using System.Configuration;
    
        12
  •  0
  •   Peter O. Manuel Pinto    12 年前

    如果错误地添加对不同的、无关的项目的引用,也可能会出现此错误。检查这是否适用于您。

        13
  •  0
  •   Keshav Patel    7 年前

    要解决此问题,请转到解决方案资源管理器,右键单击“引用”,然后单击“添加引用”,然后选择.NET并查找System.Configuration。选择一个单击“确定”。