如何修复“ConnectionString 属性尚未初始化”

Posted

技术标签:

【中文标题】如何修复“ConnectionString 属性尚未初始化”【英文标题】:How to fix "The ConnectionString property has not been initialized" 【发布时间】:2010-11-03 17:08:36 【问题描述】:

当我启动我的应用程序时,我得到:ConnectionString 属性尚未初始化。

Web.config:

<connectionStrings>
    <add name="MyDB"
         connectionString="Data Source=localhost\sqlexpress;Initial Catalog=mydatabase;User Id=myuser;Password=mypassword;" />
</connectionStrings>

堆栈是:

System.Data.SqlClient.SqlConnection.PermissionDemand() +4876643
System.Data.SqlClient.SqlConnectionFactory.PermissionDemand(DbConnection outerConnection) +20
System.Data.ProviderBase.DbConnectionClosed.OpenConnection(DbConnection outerConnection, DbConnectionFactory connectionFactory) +117
System.Data.SqlClient.SqlConnection.Open() +122

我对 .NET 还很陌生,但我不知道这个。我在 Google 上找到了很多答案,但没有一个能真正解决我的问题。

这是什么意思?我的 web.config 不好吗?我的功能不好吗?我的 SQL 配置是否无法正常工作(我正在使用 sqlexpress)?

我的主要问题是我不知道从哪里开始调试...任何事情都会有所帮助。

编辑:

失败代码:

mysqlHelper.ExecuteNonQuery(
ConfigurationManager.AppSettings["ConnectionString"],
CommandType.Text,
sqlQuery,
sqlParams);

sqlQuery 是一个类似于“从表中选择 *”的查询。 sqlParams 在这里不相关。

这里的另一个问题是我的公司使用 MySQLHelper,我无法看到它(只有一个用于帮助程序库的 dll)。它在其他项目中一直运行良好,所以我 99% 的错误不是来自这里。

我想如果没有看到代码就无法调试它,我将不得不等待与创建此帮助程序的人取得联系以获取代码。

【问题讨论】:

你能发布来自 webconfig 的连接字符串,以及使用它的失败代码吗? 【参考方案1】:

应该这样引用连接字符串:

MySQLHelper.ExecuteNonQuery(
ConfigurationManager.ConnectionStrings["MyDB"].ConnectionString,
CommandType.Text,
sqlQuery,
sqlParams);

ConfigurationManager.AppSettings["ConnectionString"] 将在 AppSettings 中查找名为 ConnectionString 的东西,但它找不到。这就是为什么您的错误消息指示 "ConnectionString" property has not been initialized,因为它正在寻找名为 ConnectionStringAppSettings 的初始化属性。

ConfigurationManager.ConnectionStrings["MyDB"].ConnectionString 指示查找名为“MyDB”的连接字符串。

Here is someone talking about using web.config connection strings

【讨论】:

【参考方案2】:

当数据源尝试绑定数据但由于找不到连接字符串而无法绑定时,您会收到此错误。根据我的经验,这通常不是由于 web.config 中的错误(尽管我不能 100% 确定这一点)。

如果您以编程方式分配数据源(如 SqlDataSource)或创建查询(即使用 SqlConnection/SqlCommand 组合),请确保为它分配了 ConnectionString。

var connection = new SqlConnection(ConfigurationManager.ConnectionStrings[nameOfString].ConnectionString);

如果您要将数据绑定元素连接到数据源(即 GridView 或 ComboBox 到 SqlDataSource),请确保将数据源分配给您的连接字符串之一。

发布您的代码(以确保数据绑定元素和 web.config 的安全),我们可以查看它。

编辑:我认为问题在于您试图从 AppSettings 区域获取连接字符串,并且以编程方式不存在它。尝试将其替换为 ConfigurationManager.ConnectionStrings["ConnectionString"].ConnectionString(如果 ConnectionString 是您的连接字符串的名称。)

【讨论】:

我不确定我是否得到它,我应该在 web.config 中移动我的连接字符串的位置吗? 它不在 AppSettings 中 不,没关系。只需更改 MySQLHelper 的代码即可获取连接字符串,就像我在编辑中所做的那样。 更改为 ConfigurationManager.ConnectionStrings["ConnectionString"].ConnectionString 不起作用,但您已经接近了。 kscott 解决方案正在运行,我只需要使用 MyDB 字符串【参考方案3】:

AppSettings中的连接字符串不是

您要查找的内容在:

System.Configuration.ConfigurationManager.ConnectionStrings["MyDB"]...

【讨论】:

【参考方案4】:

我在处理 web api Asp Net Core 项目时偶然发现了同样的问题。 我按照建议将代码中的引用更改为:

ConfigurationManager.ConnectionStrings["NameOfTheConnectionString"].ConnectionString

但添加对 System.Configuration.dll 的引用导致错误“引用无效或不受支持”。

为了解决这个问题,我必须使用 NuGet 下载包 System.Configuration.ConfigurationManager(工具 -> Nuget 包 -> 管理 Nuget 包以获取解决方案)

【讨论】:

【参考方案5】:

我发现当我创建Sqlconnection = new SqlConnection()时, 我忘了传递我的 connectionString 变量。所以这就是为什么我改变了我初始化connectionString 的方式(没有任何改变)。

如果你喜欢我,别忘了将你的字符串连接传递给SqlConnection 参数。

Sqlconnection = new SqlConnection("ConnString")

【讨论】:

【参考方案6】:

这对我有用:

var oSQLConn = new 
SqlConnection(
System.Configuration.ConfigurationManager.ConnectionStrings["Conn1"].ToString()
);

【讨论】:

【参考方案7】:

如下例所示,使用 [] 代替 ()。

SqlDataAdapter adapter = new SqlDataAdapter(sql, ConfigurationManager.ConnectionStrings["FADB_ConnectionString"].ConnectionString);
            DataTable data = new DataTable();
            DataSet ds = new DataSet();

【讨论】:

【参考方案8】:

仅在代码隐藏页面中使用:-

SqlConnection con = new SqlConnection("Data Source = DellPC; Initial Catalog = Account; user = sa; password = admin");

它应该可以正常工作

【讨论】:

这是不安全的;连接信息应放在您的 web.config 文件中,以便于更新和安全。

以上是关于如何修复“ConnectionString 属性尚未初始化”的主要内容,如果未能解决你的问题,请参考以下文章

如何修复漏洞

如何修复WMI

PHP网站漏洞怎么修复 如何修补网站程序代码漏洞

如何修复这些漏洞? (npm audit fix 无法修复这些漏洞)

如何修复AppScan漏洞

如何在DOS环境下修复系统