ConfigurationManager.ConnectionStrings正在拾取意外值

时间:2018-02-19 05:32:06

标签: c#

环境:Visual Studio 2017
.Net Framework 4.6.1

更新 我道歉,我没有提到我正在使用UnitTesting项目进行集成测试。所以看起来我也需要app.config,对吗?

使用以下内容时,我收到连接字符串的意外值:

C#.Net Framework Library

string connStr = ConfigurationManager.ConnectionStrings["test123"].ConnectionString;

的app.config

<?xml version="1.0" encoding="utf-8" ?>
<configuration>
  <connectionStrings>
    <add name="test123" connectionString="Data Source=.;Initial Catalog=AbcCompanyDb;Integrated Security=True;"/>
  </connectionStrings>
</configuration>

我搜索了整个解决方案,找不到任何对

的引用
  

\ SQLEXPRESS

调试期间连接字符串的值

{data source=.\SQLEXPRESS;Integrated Security=SSPI;AttachDBFilename=|DataDirectory|aspnetdb.mdf;User Instance=true}

6 个答案:

答案 0 :(得分:2)

您需要将connectionStrings部分添加到UnitTest Project的app.config中。

答案 1 :(得分:0)

值可能来自更高的web.config(比如machine.config),虽然同样的值test123很奇怪(如果你尝试添加一个值&#,你会收到错误39;已定义)。在添加新值之前,您可以使用<clear />清除以前设置的任何值:

<connectionStrings>
    <clear />
    <add name="test123" connectionString="Data Source=.;Initial Catalog=AbcCompanyDb;Integrated Security=True;"/>
</connectionStrings>

答案 2 :(得分:0)

  

.表示将使用同一台机器中的命名管道(共享内存)协议建立连接(不需要通过TCP / IP堆栈)

您可能还需要以下主题

SQL Server Connection Strings - dot(".") or "(local)" or "(localdb)"

Change a Sql-Server (express) from a named instance to localhost?

Can't connect to localhost, but can with computer name in SQL Server 2008

答案 3 :(得分:0)

SQLEXPRESS是对本地SQL Server Express实例的引用,并使用“。”因为服务器名称相当于声明'使用我的本地SQL服务器'。

如果SQL Server Express被注册为您的默认本地SQL服务器,那么在您的连接字符串内部引用“。”将被理解为对'SQLEXPRESS'的引用。因此,在调试时为服务器名称生成的值。

答案 4 :(得分:0)

aspnetdb.mdf 是使用ASP.NET应用程序服务时的默认数据库。你不会在你的代码中找到它。

尝试将您的连接字符串放在 web.config 文件

<configuration>
    <connectionStrings>
        <add name="test123" connectionString="Data Source=.;Initial Catalog=AbcCompanyDb;Integrated Security=True;"/>
    </connectionStrings>
</configuration>

如果您使用的是SQL Express,请使用“。\ SQLEXPRESS”作为数据源

<configuration>
    <connectionStrings>
        <add name="test123" connectionString="Data Source=.\SQLEXPRESS;Initial Catalog=AbcCompanyDb;Integrated Security=True;"/>
    </connectionStrings>
</configuration>

答案 5 :(得分:0)

所以我没有提到我正在通过单元测试项目进行集成测试。我错误地将app.config放在我的数据访问项目而不是单元测试项目中。