奇怪的";ConnectionString属性尚未初始化";错误

本文关键字:quot 初始化 错误 属性 ConnectionString | 更新日期: 2023-09-27 18:25:57

我们刚刚下载了一个新项目的源代码,该项目在其他几个开发人员的盒子上构建并运行良好。我得到错误:

ConnectionString属性尚未初始化。

我可以使用Web.config中的连接字符串通过SQL Server Management Studio连接到数据库,而不会出现问题。

引发此错误的库的源代码不可用。

该项目是一个ASP.NET MVC项目,在Web.config 中具有以下值

<connectionStrings>
    <add name="DbConnection" connectionString="Data Source=la-foo-server'development,1444;database=mydb;user id=myId;password=myPassword;" providerName="System.Data.SqlClient" />
</connectionStrings>
<appSettings>
    <add key="ConnectionStringName" value="DbConnection" />
</appSettings>

我已经尝试将App.Config添加到我的ASP.NET网站的bin和root中,以防由于某种原因,没有源代码的lib试图读取App.Config并忽略Web.Config。

没有帮助的StackOverflow解决方案:

  • 如何修复";ConnectionString属性尚未初始化"
  • ConnectionString属性尚未初始化错误
  • 解决错误";ConnectionString属性尚未初始化"

前几天,一位开发人员在Windows 8.1环境中遇到了同样的情况,他转到了Windows 7环境,错误得到了修复。我使用的是Windows7专业版,所以我想知道这是否是我安装.NET Framework的问题。

ASP.NET MVC网站的目标版本是4.0。我的大多数其他项目都是以.NET 4.5 为目标的,这些项目都没有问题

奇怪的";ConnectionString属性尚未初始化";错误

因此,我能够获得加载连接字符串的类库的源代码,结果发现该代码正在加载一组连接字符串,如下所示:

   var collection = System.Web.Configuration.WebConfigurationManager.ConnectionStrings ?? System.Configuration.ConfigurationManager.ConnectionStrings;
        if (collection[1].Name == null)
            throw new Exception("Unable to detect connection string in app.config or web.config! Default connection string name is ''DbConnection.''");
        db = new Database(collection[1].Name);

我的machine.config中恰好有一个MySql的连接字符串,名为LocalMySqlServer。此连接字符串可能是由.NET MySql连接器安装添加的,也可能是我自己更改的。

因此,connectionstring集合正在从我的machine.config加载连接,因此collection[1]数组位置中没有预期的连接字符串。这解释了为什么一些开发人员的计算机上没有问题,而其他开发人员的机器上确实有问题。

选项1:

<connectionStrings>
    <add name="DbConnection" connectionString="Data Source=la-foo-server'development,1444;Initial Catalog=mydb;user id=myId;password=myPassword;" providerName="System.Data.SqlClient" />
  </connectionStrings>

选项2:

  <connectionStrings>
    <add name="DbConnection" connectionString="Data Source=la-foo-server'development;Initial Catalog=mydb;user id=myId;password=myPassword;" providerName="System.Data.SqlClient" />
  </connectionStrings>