39

私は作ってい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
4

3 に答える 3

75

URIでアンパサンドを適切にエンコードしていません。これapp.configはXMLファイルであるため、エスケープするためのXMLの要件に準拠する必要があります(たとえば、である&必要があり&amp;、で<ある必要が&lt;あり>ます&gt;)。

あなたの場合、それはこのように見えるはずです:

<appSettings>
    <add
        key="fooUriString" 
        value="https://foo.bar.baz/download/DownloadStream?id=5486cfb8c50c9f9a2c1bc43daf7ddeed&amp;login=null&amp;password=null"
    />
</appSettings>

ただし、一般的に、次のような文字列を保存する場合は、次のよう"I <3 angle bra<kets & ampersands >>>"にします。

<appSettings>
    <add
        key="someString"
        value="I &lt;3 angle bra&lt;kets &amp; ampersands &gt;&gt;&gt;"
    />
</appSettings>

void StringEncodingTest() {
    String expected = "I <3 angle bra<kets & ampersands >>>";
    String actual   = ConfigurationManager.AppSettings["someString"];
    Debug.Assert.AreEqual( expected, actual );
}
于 2012-10-02T07:10:04.940 に答える
9

&amp;正常に動作するはずですが、ウィキペディアにはXMLで事前定義されたエンティティのリストがあります

于 2012-10-02T07:13:02.733 に答える
8

URLの&amp;の代わりに:を使用してみてください

于 2012-10-02T07:12:37.633 に答える