发布时web.config连接字符串更改

时间:2014-03-13 23:47:31

标签: c# asp.net xml visual-studio webdeploy

我的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转换)。

我已尝试将%编码为&#25;,但无法解决问题。

问题是我可以通过某种方式逃避或配置设置来解决?不幸的是,我无法控制更改密码本身,它由第三方提供。

3 个答案:

答案 0 :(得分:1)

您必须遵循XML标准

根据万维网联盟(w3C)的规范,除了用作标记分隔符或在注释,处理指令或者处理指令中使用时,有5个字符在XML文档中不得以其字面形式出现。 CDATA部分。在所有其他情况下,必须使用相应的实体或根据下表的数字引用替换这些字符:

enter image description here

指定的字符引用&#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中使用此值,或者将其单独放在“发布”对话框的“设置”选项卡中,就像我在链接图像中所做的那样。这解决了这个问题。

希望它适合你。

Publish Website - Settings Tab

答案 2 :(得分:0)

Web.Config只不过是一个XML文件。因此,您应该使用其相关的替换值而不是特殊字符。实际上不允许使用“%”,因为XML会将其读作其他特殊字符。这就是为什么它将“%F9”替换为其他值。