wake-up-neo.com

Escape-Anführungszeichen in der Verbindungszeichenfolge web.config

Ich habe eine Verbindungszeichenfolge in meiner Web-Konfiguration:

<add name="MyConString" connectionString="Server=dbsrv;User ID=myDbUser;Password=somepass"Word" providerName="System.Data.SqlClient" />

Wie Sie sehen, enthält das Passwort ein Anführungszeichen (") (von anderen Abteilungen angegeben. Ich kann dieses DB-Benutzerpasswort nicht ändern).

Wie muss ich das Zitat in dieser Verbindungszeichenfolge schützen?

Übrigens: Ich habe schon versucht & quot; in der Schnur Das hat nicht funktioniert - ado.net hat eine ArgumenException bekommen: "Das Format der Initialisierungszeichenfolge stimmt nicht mit der Spezifikation ab Index 57 überein." ist in meiner Verbindungszeichenfolge . Ich habe auch versucht, den Passwort-Teil in 'einzuschließen - funktionierte auch nicht.

Auch "" und\"- web.config können dann nicht analysiert werden.

Danke für die Lösung:

Ich musste die Flucht des doppelten Anführungszeichens kombinieren und das Passwort in einfache Anführungszeichen setzen:

<add name="MyConString" connectionString="Server=dbsrv;User ID=myDbUser;Password='somepass&quot;Word'" providerName="System.Data.SqlClient" />

Verwenden Sie &quot; anstelle von ", um es zu umgehen.

web.config ist eine XML-Datei, daher sollten Sie XML-Escaping verwenden.

connectionString="Server=dbsrv;User ID=myDbUser;Password=somepass&quot;Word"

Siehe das Forum Thread.

Update:

&quot; sollte funktionieren, aber haben Sie einige der anderen String-Escape-Sequenzen für .NET ausprobiert? \" und ""?

Update 2:

Verwenden Sie einfache Anführungszeichen für die Verbindungszeichenfolge:

connectionString='Server=dbsrv;User ID=myDbUser;Password=somepass"Word'

Oder:

connectionString='Server=dbsrv;User ID=myDbUser;Password=somepass&quot;Word'

Update 3:

Von MSDN (SqlConnection.ConnectionString-Eigenschaft):

Um Werte einschließen zu können, die ein Semikolon, einfaches Anführungszeichen oder Anführungszeichen enthalten, muss der Wert in doppelte Anführungszeichen gesetzt werden. Wenn der Wert sowohl ein Semikolon als auch ein Anführungszeichen enthält, kann der Wert in einfache Anführungszeichen gesetzt werden.

So:

connectionString="Server=dbsrv;User ID=myDbUser;Password='somepass&quot;Word'"

Das Problem betrifft nicht web.config, sondern das Format der Verbindungszeichenfolge. Wenn Sie in einer Verbindungszeichenfolge einen " in einem Wert (des Schlüsselwertpaares) haben, müssen Sie den Wert in ' einschließen. Während Password=somepass"Word nicht funktioniert, funktioniert Password='somepass"Word'.

89
Oded
connectionString="Server=dbsrv;User ID=myDbUser;Password=somepass&quot;Word"

Da es sich bei web.config um XML handelt, müssen Sie die fünf Sonderzeichen mit Escapezeichen versehen:

&amp; -> &kaufmännisches Und, U + 0026
&lt; -> <linke spitze Klammer, weniger als Zeichen, U + 003C
&gt; -> >rechtwinklige Klammer, größeres Zeichen als U + 003E
&quot; -> "Anführungszeichen, U + 0022
&apos; -> 'Apostroph, U + 0027 

+ ist vermutlich kein Problem.

47
Emanuele Greco

wenn &quot; </ code> nicht funktioniert, versuchen Sie stattdessen &#34; </ code>.

3
Earl

Verwenden Sie &quot; Das sollte funktionieren.

1
spinon

Odeds Antwort ist fast vollständig. Nur eine Sache hinzuzufügen.

  1. Entkommen Sie XML-Sonderzeichen, wie Emanuele Greco sagte.
  2. Setzen Sie das Passwort in einfache Anführungszeichen, wie Oded sagte
  3. (dieses ist neu) Flucht einzelne Ticks mit einem weiteren einzelnen Tick ( ref )

mit diesem Passwort = "'; dies sollte eine gültige Verbindungszeichenfolge sein:

connectionString='Server=dbsrv;User ID=myDbUser;Password='&quot;&amp;&amp;;'
0
Ritzelprimpf