Comment puis-je ajouter une esperluette pour une valeur dans une valeur de fichier de configuration d'application ASP.net/C#

209

J'ai un programme C # avec des valeurs dans un fichier de configuration. Ce que je veux, c'est stocker des esperluettes pour une valeur d'URL comme ...

<appSettings>
  <add key="myurl" value="http://www.myurl.com?&cid=&sid="/>
</appSettings>

Mais je reçois des erreurs lors de la construction de mon site. L'esperluette n'est pas autorisée. J'ai essayé diverses formes d'échapper aux esperluettes en vain. Quelqu'un connaît le bon formulaire pour le faire? Toutes les suggestions sont les bienvenues.

Rob Segal
la source

Réponses:

420

Utilisez " &amp;" au lieu de "&".

Eric Rosenberger
la source
2
Je pensais sérieusement que j'avais essayé ça. Je pense que j'ai raté le dernier ";" à la fin. Quoi qu'il en soit, cela fonctionne donc merci pour les commentaires Eric.
Rob Segal
6
Cela fonctionne, mais je dois mettre une chaîne.Remplacer ("& amp;", "&") partout où j'accède à ce paramètre, sinon le navigateur ne le détectera pas correctement lorsque vous cliquez sur le lien: /
DLeh
Eh bien ... c'est assez décevant. Je veux dire que le ConfigurationManager n'échappe pas automatiquement ces & xyl; caractères lors de leur extraction à partir du fichier de configuration.
Efrain
@Efrain ne sait pas exactement de quoi DLeh parle, mais unescape fonctionne très bien. Je viens de tester cela avec appSettingsune NameValueCollectionsection standard ainsi qu'une section personnalisée : l'esperluette ne s'échappe pas correctement sur les deux.
julealgon
@DLeh Si vous travaillez avec un ViewBag dans un fichier .cshtml, vous devrez appeler Html.Rawvotre fichier .cshtml pour l'empêcher d'être échappé par le framework.
user700390
25

Avez-vous essayé cela?

<appSettings>  
  <add key="myurl" value="http://www.myurl.com?&amp;cid=&amp;sid="/>
<appSettings>
BenAlabaster
la source
0

Bien que la réponse acceptée ici soit techniquement correcte, il semble y avoir une certaine confusion parmi les utilisateurs sur la base des commentaires. Lorsque vous travaillez avec un ViewBag dans un fichier .cshtml, vous devez utiliser @Html.Rawsinon vos données, après avoir été échappées par le ConfigurationManager, seront à nouveau échappées. Utilisez Html.Raw()pour éviter que cela ne se produise.

user700390
la source