在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
+我不是问题,我想。
如果" 不工作,然后尝试" 代替。
使用" 这应该工作。