在web.config连接string中转义引号
我的networkingconfiguration中有一个连接string:
<add name="MyConString" connectionString="Server=dbsrv;User ID=myDbUser;Password=somepass"word" providerName="System.Data.SqlClient" />
如您所见,密码中有一个引号(“)(由其他部门提供,我无法更改此db用户密码)。
我该如何逃避这个连接string中的引号?
顺便说一句:我已经试过“ 在string中。 这是行不通的 – ado.net得到了一个ArgumenException然后:“初始化string的格式不符合从索引57开始的规范。 57是“ 在我的连接string中。 我也尝试将密码部分封入“ – 也没有工作。
也试过“”和“ – web.config不能被parsing。
感谢您的解决scheme:
我必须结合双引号的转义和把密码放在单引号中:
<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"
看到这个论坛主题。
更新 :
"
应该工作,但事实并非如此,你有没有尝试一些其他string转义为.NET? \"
和""
?
更新2:
尝试连接string的单引号:
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,而在于连接string的格式。 在一个连接string中,如果你有一个"
在键值对中的值”,那么你需要把值放在'
所以,而Password=somepass"word
不起作用, Password='somepass"word'
确实。
connectionString="Server=dbsrv;User ID=myDbUser;Password=somepass"word"
由于web.config是XML,所以您需要转义五个特殊字符:
&
– &&&,U + 0026
<
– > <
左尖括号,小于号,U + 003C
>
– >> 右尖括号,大于号,U + 003E
"
– > "
引号,U + 0022
'
– > '
撇号,U + 0027
+我不是问题,我想。
如果"
不工作,然后尝试"
代替。
使用"
这应该工作。