我的网络配置中有一个连接字符串:
<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"word'" providerName="System.Data.SqlClient" />
答案 0 :(得分:95)
使用"
代替"
来逃避它。
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'
会这样做。
答案 1 :(得分:48)
connectionString="Server=dbsrv;User ID=myDbUser;Password=somepass"word"
由于web.config是XML,因此您需要转义五个特殊字符:
&
- &gt; &
&符号,U + 0026
<
- &gt; <
左尖括号,小于号,U + 003C
>
- &gt; >
直角括号,大于号,U + 003E
"
- &gt; "
引号,U + 0022
'
- &gt; '
撇号,U + 0027
+ 不是问题。
答案 2 :(得分:2)
如果
无效,请尝试"
"
。
答案 3 :(得分:0)
使用"
这应该有用。
答案 4 :(得分:0)
Odeds答案几乎完成。只需添加一件事。
拥有此密码=&#34;&#39 ;;这可能是一个有效的连接字符串:
connectionString='Server=dbsrv;User ID=myDbUser;Password='"&&;'