我的web.config中有一个连接字符串,其中包含%字符的密码,如下所示
<add name="ConnectionName"
providerName="System.Data.SqlClient"
connectionString="server=ServerName;database=DatabaseName;
uid=UserName;password=abcde%F9abcd;" />
在VS2013的本地连接字符串工作正常,但是当通过VS2013和Web Deploy发布到IIS8 Web服务器时,该进程中的某些内容操纵XML并将字符串的密码部分更改为以下
password=abcdeùabcd
所以它将%F9
转换为ù
(unicode转换)。
我已尝试将%编码为
,但无法解决问题。
问题是我可以通过某种方式逃避或配置设置来解决?不幸的是,我无法控制更改密码本身,它由第三方提供。
答案 0 :(得分:1)
您必须遵循XML标准
根据万维网联盟(w3C)的规范,除了用作标记分隔符或在注释,处理指令或者处理指令中使用时,有5个字符在XML文档中不得以其字面形式出现。 CDATA部分。在所有其他情况下,必须使用相应的实体或根据下表的数字引用替换这些字符:
指定的字符引用&#39; (撇号,U + 0027)是在XML 1.0中引入的,但没有出现在HTML中。因此,作者应该使用&#39;而不是&#39;在HTML 4用户代理中按预期工作。请访问 - http://www.w3.org/TR/2002/REC-xhtml1-20020801/#C_16
答案 1 :(得分:1)
在发布时,.NET假定您已在设置中放置编码值,并且在发布过程中,它会解码导致问题的这些值。因此,连接字符串的编码值为“abcde%25F9abcd”。在web.config中使用此值,或者将其单独放在“发布”对话框的“设置”选项卡中,就像我在链接图像中所做的那样。这解决了这个问题。
希望它适合你。
答案 2 :(得分:0)
Web.Config只不过是一个XML文件。因此,您应该使用其相关的替换值而不是特殊字符。实际上不允许使用“%”,因为XML会将其读作其他特殊字符。这就是为什么它将“%F9”替换为其他值。