"字符串不包含值的定义"

时间:2017-06-12 12:49:28

标签: c#

我在app.config中为keyUri的密钥提取值并查看此语法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的值。相反,我得到一个错误说明,

  

&#34;字符串不包含值的定义&#34;

4 个答案:

答案 0 :(得分:1)

ConfigurationManager.AppSettings将数据存储为KeyValuePair,因此通过指定密钥,您将获得该值。这样就好了:

string keyUri = ConfigurationManager.AppSettings["keyUri"]

这意味着ConfigurationManager.AppSettings["keyUri"]会返回一个字符串,当你将.Value追加到这一行时,你要求编译器获取字符串的value属性,因此它说“String不包含值“的定义。通过使用上面的代码,您将在字符串变量keyUri中获得所需的值。

答案 1 :(得分:1)

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

这会给你结果

答案 2 :(得分:1)

ConfigurationManager.AppSettingsNameValueCollection。当您访问using the index时,它会返回stringstring没有属性Value,在这种情况下,返回的字符串的值。

所以只需省略.Value

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

答案 3 :(得分:0)

很明显,其他人已经提到过没有属性Value。所以你应该像

一样访问它
 string keyUri = ConfigurationManager.AppSettings["keyUri"];

但我认为您打算调用以下GetValues()方法,因为ConfigurationManager.AppSettings会返回NameValueCollection

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