我正在提取 app.config 中keyUri
键的值,并查看 MS 使用的此语法,以及在执行连接字符串时也使用此语法。 在 C# 的以下代码段(已添加 System.Configuration
个,并且已添加 DLL(中,我收到此错误:
C#
/// Error on the .Value
string keyUri = ConfigurationManager.AppSettings["keyUri"].Value;
应用配置
版<?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
的值。 相反,我收到一个错误,指出,
"字符串不包含值的定义">
ConfigurationManager.AppSettings
是一个NameValueCollection
。当您使用索引访问它时,它会返回一个string
。 string
没有属性Value
,在这种情况下,返回的字符串是值。
所以只需省略.Value
:
string keyUri = ConfigurationManager.AppSettings["keyUri"];
string keyUri = ConfigurationManager.AppSettings["keyUri"];
这将为您提供结果
ConfigurationManager.AppSettings
将数据存储为 KeyValuePair,因此通过指定键,您将获得值。所以像这样使用很好:
string keyUri = ConfigurationManager.AppSettings["keyUri"]
这意味着ConfigurationManager.AppSettings["keyUri"]
将返回一个字符串,当您将.Value
附加到此行时,您要求编译器获取字符串的 value 属性,因此它说"字符串不包含值的定义"。通过使用上面的代码,您将在字符串变量 keyUri
中获得所需的值。
很明显,没有其他已经提到的属性Value
。所以你应该像这样访问它
string keyUri = ConfigurationManager.AppSettings["keyUri"];
但我认为您的意思是像下面这样调用GetValues()
方法,因为ConfigurationManager.AppSettings
返回一个NameValueCollection
string keyUri = ConfigurationManager.AppSettings.GetValues("keyUri");