2017-06-12 89 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");