Windows Service
。 Service
は毎晩何かをダウンロードする必要があるため、後で変更する必要がある場合に備えて、App.ConfigにURIを配置します。
App.ConfigにURIを書きたいのですが。なぜそれが無効になり、どのようにこれに取り組むべきですか?
<appSettings>
<add key="fooUriString"
value="https://foo.bar.baz/download/DownloadStream?id=5486cfb8c50c9f9a2c1bc43daf7ddeed&login=null&password=null"/>
</appSettings>
私のエラー:
- Entity 'login' not defined
- Expecting ';'
- Entity 'password' not defined
- Application Configuration file "App.config" is invalid. An error occurred
URIのアンパサンドを適切にエンコードしていません。 app.config
はXMLファイルであるため、エスケープに関するXMLの要件に準拠する必要があります(たとえば、&
は&
、<
は<
、>
は>
にする必要があります)。
あなたの場合、それは次のようになります:
<appSettings>
<add
key="fooUriString"
value="https://foo.bar.baz/download/DownloadStream?id=5486cfb8c50c9f9a2c1bc43daf7ddeed&login=null&password=null"
/>
</appSettings>
しかし、一般的に、"I <3 angle bra<kets & ampersands >>>"
のような文字列を格納する場合は、次のようにします。
<appSettings>
<add
key="someString"
value="I <3 angle bra<kets & ampersands >>>"
/>
</appSettings>
void StringEncodingTest() {
String expected = "I <3 angle bra<kets & ampersands >>>";
String actual = ConfigurationManager.AppSettings["someString"];
Debug.Assert.AreEqual( expected, actual );
}
使用してみてください:&
&の代わりにURL
&
は問題なく動作するはずです。Wikipediaには XMLの事前定義されたエンティティのリスト があります。