2014-07-24 80 views
3

我正在使用抽象类从我的App.config文件中获取ConnectionString。然而,而不是ConnectionString中指定的应用程序自带了......连接字符串不从项目中的App.config中读取

{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> 
+0

您的解决方案中是否有多个项目?例如,如果您是从单元测试项目运行,它将使用单元测试项目中的app.config。 – paqogomez

+0

Re“我不知道这个连接字符串是从哪里来的,”在整个解决方案中,它可能只会帮助CTRL + F'=。\ SQLEXPRESS'。上述评论者有一个很好的观点,这可能会导致您的问题。但是,这可能是一个更容易找出来自哪里的方法。 –

+0

我确实有两个项目,另一个项目有一个App.config。但是,该App.config中不包含连接字符串信息。第二个项目是在第一个项目中使用类的UI。 – webworm

回答

0

看看这个: Override machine.config by web.config

而且,绝对确保你是在正确的配置文件在Visual Studio中,因为您可以意外地从错误的文件夹中抓取并编辑一个文件夹,并且这样做会让您的应用程序抓取连接字符串e machine.config。

请参阅:Where Is Machine.Config?并查看该文件,您将看到错误的字符串来自哪里。

附加标签:web.config

相关问题