Escape citation dans web.config chaîne de connexion
j'ai une chaîne de connexion dans ma configuration web:
<add name="MyConString" connectionString="Server=dbsrv;User ID=myDbUser;Password=somepass"word" providerName="System.Data.SqlClient" />
comme vous le voyez, il y a un signe de citation ( " ) dans le mot de passe (fourni par un autre ministère). Je ne peux pas changer le mot de passe de cet utilisateur db).
Comment dois-je échapper à la citation dans cette chaîne de liens?
Btw: j'ai déjà essayé & quot; dans la chaîne. Ça n'a pas marché. ado.net J'ai alors une ArgumenException: "le Format de la chaîne d'initialisation n'est pas conforme à spécification à partir de l'index 57." 57 est où le & quot; est dans ma chaîne de connexion. J'ai aussi essayé d'inclure la partie mot de passe dans ' - n'a pas fonctionné non plus.
également essayé ""et " - web.config ne peut pas être analysé alors.
Merci pour la solution:
j'ai dû combiner l'échappement de la double citation et de mettre le mot entre guillemets simples:
<add name="MyConString" connectionString="Server=dbsrv;User ID=myDbUser;Password='somepass"word'" providerName="System.Data.SqlClient" />
5 réponses
utilisez "
au lieu de "
pour y échapper.
web.config est un fichier XML, vous devez donc utiliser XML Escape.
connectionString="Server=dbsrv;User ID=myDbUser;Password=somepass"word"
Voir ce fil de discussion du forum.
mise à Jour :
"
devrait fonctionner, mais comme il ne le fait pas, Avez-vous essayé certaines des autres séquences d'échappement de chaîne de caractères pour .NET? \"
et ""
?
mise à jour 2:
essayer les guillemets simples pour la chaîne de connexion:
connectionString='Server=dbsrv;User ID=myDbUser;Password=somepass"word'
ou:
connectionString='Server=dbsrv;User ID=myDbUser;Password=somepass"word'
mise à jour 3:
From MSDN (SqlConnection.Propriété ConnectionString):
pour inclure les valeurs qui contiennent un point-virgule, un caractère de guillemet, ou caractère à guillemets doubles, la valeur doit être entourée de guillemets doubles. Si la valeur contient à la fois un point-virgule et un caractère à guillemets doubles, la valeur peut être placée entre guillemets simples.
:
connectionString="Server=dbsrv;User ID=myDbUser;Password='somepass"word'"
Le problème n'est pas avec web.config, mais le format de la chaîne de connexion. Dans une chaîne de connexion, si vous avez un "
dans une valeur (de la paire clé-valeur), vous devez mettre la valeur '
. Donc, alors que Password=somepass"word
ne fonctionne pas, Password='somepass"word'
le fait.
connectionString="Server=dbsrv;User ID=myDbUser;Password=somepass"word"
depuis le web.config est XML, vous devez échapper aux cinq caractères spéciaux:
&
-> &
ampersand, U+0026
<
-> <
crochet d'angle gauche, moins que le signe, U+003C
>
-> >
crochet d'angle droit, supérieur au signal, U+003E
"
-> "
guillemet, U+0022
'
-> '
apostrophe, U+0027
+ ce n'est pas un problème, je suppose.
la réponse D'Odeds est presque complète. Juste une chose à ajouter.
- Escape xml caractères spéciaux comme L'a dit Emanuele Greco.
- mettez le mot de passe en guillemets simples comme Oded dit
- (c'est nouveau) l'Évasion unique tiques avec une autre tique unique ( ref )
ayant ce mot de passe="'; ceci devrait être une chaîne de connexion valide:
connectionString='Server=dbsrv;User ID=myDbUser;Password='"&&;'