我需要使用App.config文件获取“http://example.com”。
但目前我正在使用:
string peopleXMLPath = ConfigurationManager.AppSettings["server"];
我无法获得价值。
你能指出我做错了吗?
<?xml version="1.0" encoding="UTF-8"?>
<configuration>
<configSections>
<section name="device" type="System.Configuration.SingleTagSectionHandler" />
<section name="server" type="System.Configuration.SingleTagSectionHandler" />
</configSections>
<device id="1" description="petras room" location="" mall="" />
<server url="http://example.com" />
</configuration>
答案 0 :(得分:19)
我认为您需要获取配置部分,并访问:
var section = ConfigurationManager.GetSection("server") as NameValueCollection;
var value = section["url"];
您还需要更新配置文件:
<?xml version="1.0" encoding="UTF-8"?>
<configuration>
<configSections>
<section name="device" type="System.Configuration.NameValueSectionHandler" />
<section name="server" type="System.Configuration.NameValueSectionHandler" />
</configSections>
<device>
<add key="id" value="1" />
<add key="description" value="petras room" />
<add key="location" value="" />
<add key="mall" value="" />
</device>
<server>
<add key="url" value="http://example.com" />
</server>
</configuration>
修改:As CodeCaster mentioned in his answer,SingleTagSectionHandler
仅供内部使用。我认为NameValueSectionHandler
是定义配置节的首选方式。
答案 1 :(得分:3)
SingleTagSectionHandler
documentation says:
此API支持.NET Framework基础结构,不能直接在您的代码中使用。
如图here所示,您可以将其检索为HashTable
并访问其条目:
Hashtable serverTag = (Hashtable)ConfigurationManager.GetSection("server");
string serverUrl = (string)serverTag["url"];
答案 2 :(得分:1)
string peopleXMLPath = ConfigurationManager.AppSettings["server"];
从app.config文件的appSettings
部分获取值,但是您将值存储在
<server url="http://example.com" />
将值放在appSettings
部分中,如下所示,或从当前位置检索值。
您需要在配置的appSettings部分添加一个键值对。如下:
<?xml version="1.0" encoding="utf-8" ?>
<configuration>
<appSettings>
<add key="server" value="http://example.com" />
</appSettings>
</configuration>
您的阅读代码是正确的,但您应该检查是否为null。如果代码无法读取配置值,则string
变量将为空。
答案 3 :(得分:0)
您正在AppSettings
中定义配置部分而不是值。您只需将设置添加到AppSettings
:
<appSettings>
... may be some settings here already
<add key="server" value="http://example.com" />
</appSettings>
Custom config sections通常用于更复杂的配置(例如,每个键的多个值,非字符串值等等。
答案 4 :(得分:-1)
如果您想从应用设置中获取值,配置文件中的appsetting元素必须具有密钥。
定义您的服务器值,如下面配置部分所述:
<configuration>
<appSettings>
<add key="server" value="http://example.com" />
</appSettings>
...
...
...
</configuration>
现在执行以下代码行来获取服务器URL:
string peopleXMLPath = ConfigurationManager.AppSettings["server"].ToString();