从 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 < 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 读取连接字符串的主要内容,如果未能解决你的问题,请参考以下文章
C#远程连接MySQL,配置文件Web.config如何写连接字符串?
如何使用托管在本地 IIS 上的 Web 应用从 Azure 密钥保管库访问 web.config 中的应用设置和连接字符串等机密