48

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

网络配置:

<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 还很陌生,但我没有得到这个。我在谷歌上找到了很多答案,但没有一个能真正解决我的问题。

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

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

编辑:

失败代码:

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

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

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

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

4

8 回答 8

39

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

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

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

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

这是有人在谈论使用 web.config 连接字符串

于 2009-06-17T15:48:43.687 回答
19

当数据源尝试绑定数据但由于找不到连接字符串而无法绑定时,您会收到此错误。根据我的经验,这通常不是由于 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 是您的连接字符串的名称。)

于 2009-06-17T15:36:22.040 回答
3

连接字符串不在AppSettings中。

您正在寻找的是:

System.Configuration.ConfigurationManager.ConnectionStrings["MyDB"]...
于 2009-06-17T15:50:58.710 回答
0

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

ConfigurationManager.ConnectionStrings["NameOfTheConnectionString"].ConnectionString

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

配置管理器错误

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

于 2020-04-12T00:05:18.570 回答
0

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

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

Sqlconnection = new SqlConnection("ConnString")

于 2020-12-21T05:04:45.310 回答
0

这对我有用:

var oSQLConn = new 
SqlConnection(
System.Configuration.ConfigurationManager.ConnectionStrings["Conn1"].ToString()
);
于 2021-11-30T20:30:06.730 回答
-2

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

SqlDataAdapter adapter = new SqlDataAdapter(sql, ConfigurationManager.ConnectionStrings["FADB_ConnectionString"].ConnectionString);
            DataTable data = new DataTable();
            DataSet ds = new DataSet();
于 2011-02-24T07:05:01.413 回答
-2

只需在页面后面的代码中使用:-

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

它应该工作得很好

于 2019-04-30T08:03:46.603 回答