Web設定に接続文字列があります:
<add name="MyConString" connectionString="Server=dbsrv;User ID=myDbUser;Password=somepass"Word" providerName="System.Data.SqlClient" />
ご覧のとおり、パスワードには引用符( ")があります(他の部署から与えられました。このdbユーザーのパスワードは変更できません)。
この接続文字列の引用符をエスケープするにはどうすればよいですか?
ところで:私はすでに試してみました&quot;文字列で。それは機能しませんでした-ado.netはArgumenExceptionを受け取りました:「初期化文字列のフォーマットは、インデックス57から始まる仕様に準拠していません。」 57は&quot;です。接続文字列にあります。また、パスワード部分を 'で囲みました-動作しませんでした。
また、「」と「」を試してみました-web.configは解析できません。
解決策をありがとう:
二重引用符のエスケープとパスワードを単一引用符で囲むことを組み合わせる必要がありました。
<add name="MyConString" connectionString="Server=dbsrv;User ID=myDbUser;Password='somepass"Word'" providerName="System.Data.SqlClient" />
エスケープするには、"
の代わりに"
を使用します。
web.configはXMLファイルなので、XMLエスケープを使用する必要があります。
connectionString="Server=dbsrv;User ID=myDbUser;Password=somepass"Word"
this フォーラムスレッドを参照してください。
更新:
"
は機能するはずですが、機能しないので、.NETの他の文字列エスケープシーケンスをいくつか試しましたか? \"
および""
?
更新2:
ConnectionStringの単一引用符を試してください。
connectionString='Server=dbsrv;User ID=myDbUser;Password=somepass"Word'
または:
connectionString='Server=dbsrv;User ID=myDbUser;Password=somepass"Word'
更新3:
[〜#〜] msdn [〜#〜] (SqlConnection.ConnectionStringプロパティ)から:
セミコロン、一重引用符、または二重引用符を含む値を含めるには、値を二重引用符で囲む必要があります。値にセミコロンと二重引用符の両方が含まれる場合、値を単一引用符で囲むことができます。
そう:
connectionString="Server=dbsrv;User ID=myDbUser;Password='somepass"Word'"
問題はweb.configではなく、接続文字列の形式にあります。接続文字列で、(キーと値のペアの)値に"
がある場合、値を'
で囲む必要があります。したがって、Password=somepass"Word
は機能しませんが、Password='somepass"Word'
は機能します。
connectionString="Server=dbsrv;User ID=myDbUser;Password=somepass"Word"
Web.configはXMLであるため、5つの特殊文字をエスケープする必要があります。
&
-> &
アンパサンド、U + 0026<
-> <
左山括弧、小なり記号、U + 003C>
-> >
右山括弧、大なり記号、U + 003E"
-> "
引用符、U + 0022'
-> '
アポストロフィ、U + 0027
+は問題ではないと思います。
if "
</ code> 動作していない場合は、"
</ code> 代わりに。
Odedsの回答はほぼ完了です。 1つ追加するだけです。
このpassword = "'を使用すると、有効な接続文字列になります。
connectionString='Server=dbsrv;User ID=myDbUser;Password='"&&;'
つかいます "
それはうまくいくはずです。