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&quot;word'" providerName="System.Data.SqlClient" />
66
demandé sur Sebastian P.R. Gingter 2010-07-05 11:50:17

5 réponses

utilisez &quot; 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&quot;word"

Voir ce fil de discussion du forum.

mise à Jour :

&quot; 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&quot;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&quot;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.

82
répondu Oded 2010-07-05 10:14:59
connectionString="Server=dbsrv;User ID=myDbUser;Password=somepass&quot;word"

depuis le web.config est XML, vous devez échapper aux cinq caractères spéciaux:

&amp; -> & ampersand, U+0026

&lt; -> < crochet d'angle gauche, moins que le signe, U+003C

&gt; -> > crochet d'angle droit, supérieur au signal, U+003E

&quot; -> " guillemet, U+0022

&apos; -> ' apostrophe, U+0027

+ ce n'est pas un problème, je suppose.

45
répondu Emanuele Greco 2014-09-17 14:20:07

si &quot; ne fonctionne pas alors essayez &#34; à la place.

3
répondu Earl 2013-01-31 20:24:21

Utiliser &quot; Qui devrait fonctionner.

1
répondu spinon 2010-07-05 07:53:59

la réponse D'Odeds est presque complète. Juste une chose à ajouter.

  1. Escape xml caractères spéciaux comme L'a dit Emanuele Greco.
  2. mettez le mot de passe en guillemets simples comme Oded dit
  3. (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='&quot;&amp;&amp;;'
0
répondu Ritzelprimpf 2018-05-17 09:45:19