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"Word'" providerName="System.Data.SqlClient" />
Verwenden Sie "
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"Word"
Siehe das Forum Thread.
Update:
"
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"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"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'
.
connectionString="Server=dbsrv;User ID=myDbUser;Password=somepass"Word"
Da es sich bei web.config um XML handelt, müssen Sie die fünf Sonderzeichen mit Escapezeichen versehen:
&
-> &
kaufmännisches Und, U + 0026<
-> <
linke spitze Klammer, weniger als Zeichen, U + 003C>
-> >
rechtwinklige Klammer, größeres Zeichen als U + 003E"
-> "
Anführungszeichen, U + 0022'
-> '
Apostroph, U + 0027
+ ist vermutlich kein Problem.
wenn "
</ code> nicht funktioniert, versuchen Sie stattdessen "
</ code>.
Verwenden Sie "
Das sollte funktionieren.
Odeds Antwort ist fast vollständig. Nur eine Sache hinzuzufügen.
mit diesem Passwort = "'; dies sollte eine gültige Verbindungszeichenfolge sein:
connectionString='Server=dbsrv;User ID=myDbUser;Password='"&&;'