从 web.config 读取连接字符串

Posted

技术标签:

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

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

我试过了:

WebConfigurationManager

ConfigurationManager

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

【问题讨论】:

【参考方案1】:

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

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

【讨论】:

MSDN, System.configuration。它需要System.Configuration.dll【参考方案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 语句。

【讨论】:

以上是关于从 web.config 读取连接字符串的主要内容,如果未能解决你的问题,请参考以下文章

Web.config和App.config配置连接字符串

web.config 转换 - 从连接字符串部分删除注释

C#远程连接MySQL,配置文件Web.config如何写连接字符串?

加密web.config中的连接字符串

如何使用托管在本地 IIS 上的 Web 应用从 Azure 密钥保管库访问 web.config 中的应用设置和连接字符串等机密

从Web.Config获取多个connectionStrings到字典c#没有循环