转义web.config连接字符串中的引号

Seb*_*ter 80 asp.net connection-string web-config escaping

我的网络配置中有一个连接字符串:

<add name="MyConString" connectionString="Server=dbsrv;User ID=myDbUser;Password=somepass"word" providerName="System.Data.SqlClient" />
Run Code Online (Sandbox Code Playgroud)

如您所见,密码中有一个引号(")(从其他部门给出.我无法更改此db用户密码).

如何在此连接字符串中转义引号?

顺便说一句:我已经尝试过" 在字符串中.那不起作用 - ado.net得到了一个ArgumenException:"初始化字符串的格式不符合从索引57开始的规范." 57是" 在我的连接字符串中.我也尝试将密码部分包含在' - 也没用.

还试过""和\" - 无法解析web.config.

谢谢你的解决方案:

我必须结合双引号的转义并将密码放在单引号中:

<add name="MyConString" connectionString="Server=dbsrv;User ID=myDbUser;Password='somepass&quot;word'" providerName="System.Data.SqlClient" />
Run Code Online (Sandbox Code Playgroud)

Ode*_*ded 98

使用&quot;而不是"逃避它.

web.config是一个XML文件,因此您应该使用XML转义.

connectionString="Server=dbsrv;User ID=myDbUser;Password=somepass&quot;word"
Run Code Online (Sandbox Code Playgroud)

看到这个论坛帖子.

更新:

&quot;应该工作,但事实并非如此,你有没有尝试过.NET的其他字符串转义序列?\"""

更新2:

尝试使用connectionString的单引号:

connectionString='Server=dbsrv;User ID=myDbUser;Password=somepass"word'
Run Code Online (Sandbox Code Playgroud)

要么:

connectionString='Server=dbsrv;User ID=myDbUser;Password=somepass&quot;word'
Run Code Online (Sandbox Code Playgroud)

更新3:

MSDN(SqlConnection.ConnectionString属性):

要包含包含分号,单引号字符或双引号字符的值,该值必须用双引号括起来.如果值包含分号和双引号字符,则该值可以用单引号括起来.

所以:

connectionString="Server=dbsrv;User ID=myDbUser;Password='somepass&quot;word'"
Run Code Online (Sandbox Code Playgroud)

问题不在于web.config,而在于连接字符串的格式.在连接字符串中,如果您具有"(键值对的)值,则需要将值括起来'.所以,虽然Password=somepass"word不起作用 ,但是Password='somepass"word'.


Ema*_*eco 50

connectionString="Server=dbsrv;User ID=myDbUser;Password=somepass&quot;word"
Run Code Online (Sandbox Code Playgroud)

由于web.config是XML,因此您需要转义五个特殊字符:

&amp;- > & &符号,U + 0026
&lt; - > < 左尖括号,小于号,U + 003C
&gt; - > > 右尖括号,大于号,U + 003E
&quot; - > " 引号,U + 0022
&apos; - > ' 撇号,U + 0027

我想,+不是问题.