【问题标题】:Read connection string from web.config从 web.config 读取连接字符串
【发布时间】:2011-09-02 07:47:19
【问题描述】:

如何将web.config 文件中的连接字符串读取到包含在类库中的公共类中?

我试过了:

WebConfigurationManager

ConfigurationManager

但是我的类库中无法识别这些类。

【问题讨论】:

    标签: c# .net asp.net web-config connection-string


    【解决方案1】:

    你需要添加对System.Configuration的引用,然后使用:

    System.Configuration.ConfigurationManager.
        ConnectionStrings["connectionStringName"].ConnectionString;
    

    【讨论】:

    【解决方案2】:

    添加System.Configuration 作为参考。

    由于某些奇怪的原因,默认情况下不包含它。

    【讨论】:

      【解决方案3】:

      C#

      // Add a using directive at the top of your code file    
      using System.Configuration;
      
      // Within the code body set your variable    
      string cs = ConfigurationManager.ConnectionStrings["connectionStringName"].ConnectionString;
      

      VB

      ' Add an Imports statement at the top of your code file    
      Imports System.Configuration
      
      ' Within the code body set your variable    
      Dim cs as String = ConfigurationManager.ConnectionStrings("connectionStringName").ConnectionString
      

      【讨论】:

      • "在代码文件的顶部添加引用" => 这是 using 指令,而不是引用!
      【解决方案4】:

      然后添加System.Configuration作为参考:

       using System.Configuration;
      
       ...
      
       string conn = 
          ConfigurationManager.ConnectionStrings["ConnectionName"].ConnectionString;
      

      【讨论】:

        【解决方案5】:

        我猜您需要添加对 System.Configuration 程序集的引用(如果尚未添加)。

        此外,您可能需要在代码文件的顶部插入以下行:

        using System.Configuration;
        

        【讨论】:

          【解决方案6】:
          using System;
          using System.Collections.Generic;
          using System.Configuration;
          using System.Data.SqlClient;
          using System.Drawing;
          using System.Linq;
          using System.Web;
          using System.Web.UI;
          using System.Web.UI.DataVisualization.Charting;
          using System.Web.UI.WebControls;  
          

          C#

          string constring = ConfigurationManager.ConnectionStrings["ABCD"].ConnectionString;
                          using (SqlConnection con = new SqlConnection(constring))
          

          在 WEB.CONFIG 文件代码下方

          <connectionStrings>
              <add name="ABCD" connectionString="Data Source=DESKTOP-SU3NKUU\MSSQLSERVER2016;Initial Catalog=TESTKISWRMIP;Integrated Security=True" providerName="System.Data.SqlClient"/>
            </connectionStrings>
          

          在上面的代码中 ABCD 是连接名称

          【讨论】:

          • 补充: 除了接受连接字符串名称的索引器外,还允许使用整数索引 - 如果您想读取所有连接字符串for 循环 (for (int i = 0; i &lt; numOfConnections; i++) { var conn = ConfigurationManager.ConnectionStrings[i]; ... }) 并使它们在组合框中可选择。使用var numOfConnections = ConfigurationManager.ConnectionStrings.Count;,您可以确定存在多少个连接字符串。在此示例中,conn.Name 包含连接的名称。
          【解决方案7】:

          VB 中:这应该可以工作

          ConfigurationManager.ConnectionStrings("SQLServer").ConnectionString
          

          C# 中(根据 Ala 的评论)

          ConfigurationManager.ConnectionStrings["SQLServer"].ConnectionString
          

          【讨论】:

          • 那些括号需要是括号。
          • @CharlesBurns,谢谢,我用VB写错了,用C#确定应该是ConfigurationManager.ConnectionStrings["SQLServer"].ConnectionString
          • 啊,我什至没有意识到那是VB。我以为是错字。在某种程度上,我也犯了错误。
          【解决方案8】:

          您必须在页面或类的顶部调用此类:

          using System.Configuration;
          

          然后您可以使用此方法返回连接字符串以准备传递给 sqlconnection 对象以继续您的工作,如下所示:

              private string ReturnConnectionString()
              {
                 // Put the name the Sqlconnection from WebConfig..
                  return ConfigurationManager.ConnectionStrings["DBWebConfigString"].ConnectionString;
              }
          

          只是为了明确说明这是网络配置中的值:

            <add name="DBWebConfigString" connectionString="....." />   </connectionStrings>
          

          【讨论】:

          • 在Web项目中最好使用System.Web.Configuration中的WebConfigurationManager。
          【解决方案9】:
          using System.Configuration;
          
          
          string conn = ConfigurationManager.ConnectionStrings["ConStringName"].ToString();
          

          【讨论】:

            【解决方案10】:
            using System.Configuration;
            
            
            string connString = ConfigurationManager.ConnectionStrings["ConStringName"].ToString();
            

            记住不要使用 ConnectionStrings[index] 因为你可能会使用全局机器配置和可移植性

            【讨论】:

              【解决方案11】:

              首先添加这个:

              using System.Configuration;
              

              【讨论】:

                【解决方案12】:

                似乎每个人都建议添加

                using System.Configuration;
                

                这是真的。

                但我可以建议您考虑安装 ReSharper 的 Visual Studio 扩展吗?

                安装后,您不会看到未定义类的错误,而是会看到一个提示,告诉您它在哪个程序集中,询问您是否希望它添加所需的 using 语句。

                【讨论】:

                  猜你喜欢
                  • 1970-01-01
                  • 1970-01-01
                  • 1970-01-01
                  • 1970-01-01
                  • 1970-01-01
                  • 1970-01-01
                  • 1970-01-01
                  • 1970-01-01
                  • 2020-01-13
                  相关资源
                  最近更新 更多