App.config/Web.config 中特殊字符的处理
我们知道在应用程序中嵌入连接字符串可能导致安全漏洞和维护问题。使用 Ildasm.exe(MSIL 反汇编程序)
工具可以查看编译到应用程序源代码中的未加密连接字符串。此外,如果连接字符串发生更改,则必须重新编译应用程序。因此,强烈建议将连接字符串存储在应用程序配置文件中。
最近在学习SQL Server时遇到连接字符串包含特殊字符出现编译错误的问题。
App.config:
1 <?xml version="1.0" encoding="utf-8" ?>
2 <configuration>
3 <startup>
4 <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.5" />
5 </startup>
6 <connectionStrings>
7 <add name="DBconnStr" connectionString="Data Source=.;Initial Catalog=MyTest;User ID=sa;PassWord=123&456"/>
8 </connectionStrings>
9 </configuration>
由于数据库连接的密码中含有特殊字符"&",编译时出现如下如下错误信息:
显然编译器不认识"&456",怎么解决呢,总不能更换密码吧?
事实上App.config是xml文件,在xml文件中特殊字符要进行HTML转义。
HTML中<,>,&等有特殊含义(<,>,用于链接签,&用于转义),不能直接使用。这些符号是不显示在我们最终看到的网页里的,那如果我们希望在网页中显示这些符号,就要用到HTML转义字符串(Escape Sequence)了
HTML特殊转义字符列表
最常用的字符实体
显示 | 说明 | 实体名称 | 实体编号 |
空格 | |   | |
< | 小于 | < | < |
> | 大于 | > | > |
& | &符号 | & | & |
" | 双引号 | " | " |
© | 版权 | © | © |
® | 已注册商标 | ® | ® |
™ | 商标(美国) | ™ | ™ |
× | 乘号 | × | × |
÷ | 除号 | ÷ | ÷ |
所以只要把"&"进行转义就可以了,将PassWord改为
PassWord=123&456"
成功通过编译。