web-dev-qa-db-fra.com

Comment écrire une chaîne URI dans App.Config

Je fais un Windows Service. Le Service doit télécharger quelque chose tous les soirs, et je veux donc placer l'URI dans App.Config au cas où je devrais le changer plus tard.

Je veux écrire un URI dans mon App.Config. Qu'est-ce qui le rend invalide et comment dois-je l'aborder?

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

Mes erreurs:

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

Vous n'avez pas correctement codé les esperluettes dans votre URI. N'oubliez pas que app.config est un fichier XML, vous devez donc vous conformer aux exigences XML pour l'échappement (par exemple & devrait être &amp;, < devrait être &lt; et > devrait être &gt;).

Dans votre cas, cela devrait ressembler à ceci:

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

Mais en général, si vous vouliez stocker une chaîne qui ressemblait à "I <3 angle bra<kets & ampersands >>>" puis faites ceci:

<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 );
}
61
Dai

Essayez d'utiliser: &amp; à la place de & dans l'url

7
Kapil Khandelwal

&amp; devrait très bien fonctionner, Wikipedia a un Liste des entités prédéfinies en XML .

7
Raab