Подтвердить что ты не робот

Как написать строку URI в App.Config

Я делаю Windows Service. Service должен каждый раз загружать что-то, и поэтому я хочу поместить URI в App.Config, если мне потом придется его изменить.

Я хочу написать URI в своем App.Config. Что делает его недействительным и как я должен подходить к этому?

<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
4b9b3361

Ответ 1

Вы неправильно закодировали амперсанды в своем 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 );
}

Ответ 2

Попробуйте использовать &amp; вместо & в URL