2012-10-02 14 views
24

Robię Windows Service. The Service musi co noc wkładać coś, dlatego chcę umieścić URI w App.Config na wypadek, gdybym później musiał go zmienić.Jak napisać ciąg URI w App.Config

Chcę napisać URI w moim App.Config. Co sprawia, że ​​jest on nieważny i jak powinienem się do tego zbliżyć?

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

Moje błędy:

- Entity 'login' not defined 
- Expecting ';' 
- Entity 'password' not defined 
- Application Configuration file "App.config" is invalid. An error occurred 
+1

http://stackoverflow.com/questions/1328538/how-do-i-escape-ampersands-in-xml tylko uciec od ampersand –

Odpowiedz

50

Nie prawidłowo zakodowany przez ampersandy w URI. Pamiętaj, że app.config jest plikiem XML, więc musisz dostosować się do wymagań XML dotyczących wymykania się (na przykład & powinno być &amp;, < powinno być &lt;, a > powinno być &gt;).

W Twoim przypadku powinno to wyglądać tak:

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

ale w ogóle, jeśli chcesz przechowywać ciąg znaków, który wyglądał jak "I <3 angle bra<kets & ampersands >>>" następnie to zrobić:

<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); 
} 
+0

Dzięki za odpowiedzi chłopaki. Byłeś pierwszy, więc przyjmę twoją, w ciągu kilku minut, kiedy pozwolą mi także bogowie SO. – radbyx

7

Spróbuj użyć: &amp; w miejscu & w url