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>
私はあなたが設定セクションを取得し、それにアクセスする必要があると思います:
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>
編集: CodeCasterが彼の回答で述べたように 、SingleTagSectionHandler
は内部使用のみです。 NameValueSectionHandler
は、configセクションを定義するための好ましい方法だと思います。
SingleTagSectionHandler
ドキュメントは言う :
このAPIは.NET Frameworkインフラストラクチャをサポートし、コードから直接使用するためのものではありません。
here のように、HashTable
として取得し、そのエントリにアクセスできます。
Hashtable serverTag = (Hashtable)ConfigurationManager.GetSection("server");
string serverUrl = (string)serverTag["url"];
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
変数はnullになります。
AppSettings
でvalueの代わりに構成sectionを定義しています。 AppSettings
に設定を追加するだけです。
<appSettings>
... may be some settings here already
<add key="server" value="http://example.com" />
</appSettings>
カスタム構成セクション は通常、より複雑な構成に使用されます(たとえば、キーごとに複数の値、非文字列値など)。