2010-03-28 59 views
2

我想从app.config获取数据,并且我总是得到零。在app.config是在这里:无法读取app.config,为什么?

<?xml version="1.0" encoding="utf-8"?> 
<configuration> 
    <connectionStrings> 
    <add name="ExplorerContext" connectionString="metadata=res://*/ExplorerData.csdl|res://*/ExplorerData.ssdl|res://*/ExplorerData.msl;provider=System.Data.SqlClient;provider connection string=&quot;Data Source=MYT\SQLEXPRESS;Initial Catalog=Explorer;Integrated Security=True;MultipleActiveResultSets=True&quot;" providerName="System.Data.EntityClient" /> 
    </connectionStrings> 
</configuration> 

有人能解释一下什么是错的,为什么我不能得到的数值, System.Configuration.ConfigurationManager.AppSettings.Count始终为0

我fogot指定我用的类库,我” m试图使用NUnit项目来检查。而这个类库调用了一个使用ADO.NET Entity Project的项目(也是类库)。

+0

我知道这是旧的,如果没有答案在这里帮助尝试:http://stackoverflow.com/questions/4280970/configurationmanager-appsettings-getting-null – 2012-07-25 04:16:49

回答

7

您没有使用AppSettings!改为检查ConfigurationManager.ConnectionStrings

1

您的配置文件中没有声明任何AppSettings。如果您想获得连接字符串,那么你应该使用:

var connectionString = ConfigurationManager.ConnectionStrings["ExplorerContext"].ConnectionString; 

编辑如果您使用NUnit,你可以,只要它是在DLL的名字命名提供一个配置文件。例如,如果DLL名为Foo.dll,那么配置文件必须命名为Foo.dll.config。 Visual Studio不会为你做这个DLL。您必须手动创建该文件,并且必须确保它进入正确的bin文件夹。

请参阅NUnit Configuration Files了解更多信息。

+0

哦,我的! 当我使用这种结构时,我可以看到一些奇怪的连接字符串,我没有在我的app.config中: System.Configuration.ConfigurationManager.ConnectionStrings [0] {data source =。\ SQLEXPRESS; Integrated .. 名称:“LocalSqlServer” 提供者名称:“System.Data.SqlClient” 我无法想象它从哪里来? – mimic 2010-03-28 07:04:52

+1

我没有指定ConnectionStrings [0],我在名称中使用OP的名称(即ConnectionStrings [“ExplorerContext”]。默认情况下,ASP.NET在machine.config文件中为LocalSqlServer添加连接字符串你可以忽略。 – Thomas 2010-03-28 07:14:35

+0

@ user46503:到本地SQL服务器的连接字符串是从您的machine.config深入您的系统的肠子..... – 2010-03-28 07:19:11

1

我忘记指定我使用类 库,我试图使用NUnit项目检查 。并且该类 库使用ADO.NET实体 Project调用另一个项目(类 库)。

你需要把你的配置信息到主要应用 - 使用/调用与EF模型您的类库项目的应用程序。 .NET配置本身不支持类库级别的app.config。

因此,在您的测试环境中,主测试工具将需要在其app.config中包含这些条目。

如果您坚持认为您的类库程序集有自己的配置,请查阅Jon Rista的Cracking the Mysteries of .NET 2.0 Configuration,他详细地解释了如何使用ConfigurationManager.OpenExeConfiguration调用打开任意*​​ .config文件并在.NET 2.0中使用它配置系统。它的作品 - 但它更多的工作,我不会推荐它。

+0

这个帮了我。感谢您的好链接。 – 2011-06-27 05:27:52

相关问题