2010-03-28 60 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

相關問題