项目中无法从App.config读取连接字符串

3
我正在使用一个抽象类从我的App.config文件中获取ConnectionString。然而,应用程序没有使用指定的ConnectionString,出现了...
{data source=.\SQLEXPRESS;Integrated Security=SSPI;AttachDBFilename=|DataDirectory|aspnetdb.mdf;User Instance=true}

我不知道这个连接字符串是从哪里来的。我没有安装SQL Express。我知道正确的App.config没有被访问,因为我添加了一个名为foo的虚拟连接字符串,但在调试时只有一个连接字符串被捕获,而不是两个。就像应用程序从另一个App.config获取连接字符串一样!

这是我的类:

using System;
using System.Configuration;

namespace MyApiUpdater.Data
{
    public abstract class ConnectionAccess
    {

        protected string ConnectionString
        {
            get 
            {
                return ConfigurationManager.ConnectionStrings["MyDatabase"].ConnectionString;
            }
        }
    }
}

这是我的 App.config 文件

<?xml version="1.0" encoding="utf-8" ?>
<configuration>
    <connectionStrings>
        <add name="MyDatabase" connectionString="Server=MyDatabaseServer;Database=MyDBName;Trusted_Connection=True;" />\
        <add name="foo" connectionString="Server=MyDatabaseServer;Database=MyDBName;Trusted_Connection=True;" />
    </connectionStrings>
</configuration>

你的解决方案中有多个项目吗?例如,如果您从单元测试项目运行,则它将使用来自单元测试项目的app.config。 - crthompson
关于"I have no idea where this connections string came from",在整个解决方案中使用CTRL+F搜索=.\SQLEXPRESS可能会有所帮助。上面的评论者提出了一个很好的观点,这可能是导致你的问题的原因。但这可能是一个更容易找到它来自哪里的方法。 - Matthew Haugen
我确实有两个项目,另一个项目有一个App.config文件。然而,该App.config文件中并没有包含连接字符串信息。这第二个项目是使用第一个项目中的类的用户界面。 - webworm
我已经在整个解决方案中搜索了=.\SQLEXPRESS,但没有找到。 - webworm
我怀疑你的应用程序没有使用你认为它在使用的配置文件。 - Rob Tillie
1个回答

0

看看这个: 通过web.config覆盖machine.config

此外,请务必确保您在Visual Studio中使用正确的配置文件,因为您可能会意外地从错误的文件夹中获取并编辑一个文件,这样做会使您的应用程序获取machine.config中的连接字符串。

请参见:Machine.Config在哪里?,查看文件,您将看到错误字符串来自何处。

附加标签:web.config


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接