2012-10-02 13 views
24

Sto creando un Windows Service. Lo Service deve scaricare qualcosa ogni notte e quindi voglio posizionare l'URI in App.Config nel caso in cui in seguito debba cambiarlo.Come scrivere una stringa URI in App.Config

Voglio scrivere un URI nel mio App.Config. Cosa lo rende invalido e come dovrei avvicinarmi a questo?

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

miei errori:

- 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 basta sfuggire alla e commerciale –

risposta

50

Non sono correttamente codificati i segni & nel vostro URI. Ricordare che app.config è un file XML, quindi è necessario conformarsi ai requisiti XML per l'escape (ad esempio & deve essere &amp;, < deve essere &lt; e > deve essere &gt;).

Nel tuo caso, dovrebbe assomigliare a questo:

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

Ma in generale, se si voleva memorizzare una stringa che sembrava "I <3 angle bra<kets & ampersands >>>" quindi fare questo:

<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

Grazie per le risposte ragazzi. Tu sei stato il primo, quindi accetterò il tuo, in un paio di minuti, quando gli dei SO permetteranno anche a me. – radbyx

7

Prova con: &amp; al posto di & nell'URL

Problemi correlati