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

时间:2010-07-05 07:50:18

标签: asp.net escaping web-config connection-string

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

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

如您所见,密码中有一个引号(“)(从其他部门提供。我无法更改此db用户密码)。

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

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

还试过“”和\“ - 无法解析web.config。

感谢您的解决方案:

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

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

5 个答案:

答案 0 :(得分:95)

使用&quot;代替"来逃避它。

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

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

请参阅this论坛帖子。

<强>更新

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

更新2:

尝试使用connectionString的单引号:

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'会这样做。

答案 1 :(得分:48)

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

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

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

我想,

+ 不是问题。

答案 2 :(得分:2)

如果&quot;无效,请尝试&quot;

答案 3 :(得分:0)

使用&quot;这应该有用。

答案 4 :(得分:0)

Odeds答案几乎完成。只需添加一件事。

  1. 像Emanuele Greco说的逃脱xml特殊字符。
  2. 将密码放在单引号中,如Oded所说
  3. (这是新的)使用另一个单一刻度(ref
  4. 转义单个刻度

    拥有此密码=&#34;&#39 ;;这可能是一个有效的连接字符串:

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