2010-02-21 5 views
3

Je dois stocker une chaîne html échappée dans une clé dans web.config en utilisant la méthode KeyValueConfigurationElement.Save intégrée dans framework 3.5. Mais quand j'essaye de le faire, il continue d'échapper à mes esperluettes.Mise à jour des valeurs dans web.config

code

ressemble à ceci:

strHTML = DecodeFTBInput(FTB1.Text) 

FTB1.Text est une chaîne de HTML, comme ceci: <b><font color="#000000">Testing</font></b>

DecodeFTPInput utilise la méthode String.Replace() pour changer < et> à &lt; et . &gt;, et "&quot;

Compte tenu de la chaîne ci-dessus et la fonction, disons strHTML contient maintenant les éléments suivants:

&lt;b&gt;&lt;font color=&quot;#000000&quot;&gt;Testing&lt;/font&gt;&lt;/b&gt; 

Bien sûr, je peux éditer manuellement web.config pour stocker la valeur correcte, mais j'ai besoin que l'utilisateur admin authentifié puisse changer lui-même le html. Le problème est que lorsque j'essaie d'enregistrer cette chaîne dans sa clé dans web.config, il échappe tous les esperluettes comme &amp; qui ruine la chaîne.

Comment puis-je contourner le problème?

Répondre

1

web.config est un fichier XML, donc quand il écrit des valeurs là, les chaînes .NET Framework stocke en utilisant HTML encoding, en remplaçant les <>& caractères avec &lt;, &gt; et &amp;, et bien plus encore.

Vous devrez arrêter votre méthode DecodeFTPInput du code HTML si vous souhaitez que le code HTML du fichier web.config soit modifiable. Sinon, vous encoderez deux fois le HTML, ce qui n'est pas le résultat que vous voulez!

+0

Je vois votre point, merci pour la réponse. Je vais juste coder Base64, car je pense que cela n'utilise que des caractères XML. Si ce n'est pas une joie, je vais MD5 hacher le bâtard, lol. Je peux reconvertir avant d'attribuer la valeur à un asp: literal. –

+0

derp, md5 est à sens unique, mais le point reste, je vais le croquer en entiers si je dois le faire. –

Questions connexes