1. ホーム
  2. asp.net

[解決済み] web.config の接続文字列で引用符をエスケープする

2023-03-07 04:21:31

質問

ウェブ設定に接続文字列があります。

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

ご覧のように、パスワードに引用符(")があります(他の部署から与えられたものです。 このデータベースユーザーのパスワードは変更できません)。

この接続文字列の引用符はどのようにエスケープしなければならないのでしょうか?

Btw: 私はすでに文字列で & quot; を試しました。ado.net は ArgumenException を受け取りました: "Format of the initialization string does not conform to specification starting at index 57." 57は、私の接続文字列の& quot;がある場所です。 また、パスワードの部分を''で囲んでみましたが、これもうまくいきませんでした。

また、"" と \" も試してみましたが、これでは web.config を解析することができません。

解決策をありがとうございました。

ダブルクォートのエスケープと、パスワードをシングルクォートにすることを組み合わせなければなりませんでした。

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

どのように解決するのですか?

使用方法 &quot; の代わりに " でエスケープします。

web.configはXMLファイルなので、XMLエスケープを使用する必要があります。

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

参照 この フォーラムのスレッドを参照してください。

更新 :

&quot; は動作するはずですが、動作しないので、.NET用の他の文字列エスケープシーケンスを試してみましたか? \""" ?

アップデート2。

接続文字列を一重引用符で囲んでみてください。

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

または

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

アップデート3です。

から MSDN (SqlConnection.ConnectionString プロパティ) を参照してください。

セミコロン、シングルクォート文字、またはダブルクォート文字を含む値を含めるには、その値をダブルクォートで囲む必要があります。値にセミコロンとダブルクォート文字の両方が含まれている場合、値はシングルクォートで囲むことができます。

では

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

問題はweb.configではなく、接続文字列の書式にあります。接続文字列の中で、もし " で値を囲む必要があります (キーと値のペアの)。 ' . そのため Password=somepass"word は機能しません。 Password='somepass"word' は動作します。