"String Does Not Contain Definition For Value"



我正在提取 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。当您使用索引访问它时,它会返回一个stringstring没有属性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");

相关内容

最新更新