2012-10-02 31 views
24

'da bir URI dizesi nasıl yazılır Windows Service yapıyorum. Service, her gece bir şeyler boşaltmak zorundadır ve daha sonra değiştirmem gerekirse, URI'yi App.Config içine yerleştirmek istiyorum.App.Config

App.Config sayfamda bir URI yazmak istiyorum. Onu geçersiz kılan nedir ve buna nasıl yaklaşmalıyım?

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

Benim hatalar:

- 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 ampersandan kaçış –

cevap

50

Sen düzgün URI'de ve işaretleri kodlanmış değil. app.config bir XML dosyası olduğunu unutmayın, bu yüzden kaçmak için XML'in gereksinimlerine uygun olması gerektiğini (ör &&amp;, <&lt; olmalı ve >&gt; olmalıdır olmalıdır). Senin durumunda

, bu gibi görünmelidir:

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

Ancak genel olarak, daha sonra bunu "I <3 angle bra<kets & ampersands >>>" benzeyen bir dize depolamak istiyorsa:

<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

Cevaplar için teşekkürler çocuklar. Önce sen öyleydin, ben de seninkileri kabul edeceğim. – radbyx

7

kullanmayı deneyin: url & yerine &amp;