2017-06-12 99 views
0

我提取的關鍵字爲keyUri的app.config中的值並查看此語法used by MS,以及在執行連接字符串時也使用了此語法。在下面的代碼片段(System.Configuration已添加,和DLL已添加)的C#,我收到此錯誤:「字符串不包含定義的值」

C#

/// Error on the .Value 
string keyUri = ConfigurationManager.AppSettings["keyUri"].Value; 

的app.config

<?xml version="1.0" encoding="utf-8" ?> 
<configuration> 
    <startup> 
    <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.5" /> 
    </startup> 
    <appSettings> 
    <add key="keyUri" value="test" /> 
    </appSettings> 
</configuration> 

根據代碼,它應該查看<appSettings>,並返回鍵值keyUri的值。相反,我得到一個錯誤,說明,

"String Does Not Contain Definition For Value"

+0

你肯定在app.config已被複制到應用程序文件夾? – Neil

+3

'ConfigurationManager.AppSettings [string key]'返回'string'。只要刪除'.Value',你應該在'keyUri'變量中得到'test' – Nino

+2

答案就在你的錯誤信息中。但你也可以參考[MSDN](https://msdn.microsoft.com/en-us/library/8d0bzeeb(v = vs.110).aspx) - 'ConfigurationManager.AppSettings [「keyUri」]'返回一個字符串。 –

回答

1

ConfigurationManager.AppSettings存儲數據KeyValuePair,所以通過指定鍵,你會得到的值。所以它的精細使用這樣的:

string keyUri = ConfigurationManager.AppSettings["keyUri"] 

這意味着ConfigurationManager.AppSettings["keyUri"]將返回一個字符串,當你追加.Value這一行,你問的編譯器來獲得字符串的值屬性,因此它說「字符串不包含定義的值」。通過使用上面的代碼,您將獲得字符串變量keyUri中的所需值。

1
string keyUri = ConfigurationManager.AppSettings["keyUri"]; 

這會給你的結果

+0

你有什麼改變?爲什麼這能解決問題? –

0

很明顯,沒有物業Value其他已經提到。所以,你應該訪問它像

string keyUri = ConfigurationManager.AppSettings["keyUri"]; 

但我認爲你的意思是叫GetValues()方法如下面的原因ConfigurationManager.AppSettings返回NameValueCollection

string keyUri = ConfigurationManager.AppSettings.GetValues("keyUri");