防止百分比字符转换

时间:2011-06-28 15:30:15

标签: asp.net asp.net-mvc-3 msdeploy webdeploy

我正在尝试将Web部署工具包与我们的MVC3项目一起使用,整体部署工作正常但我们的数据库连接字符串的密码包含百分比(%)字符,后跟两个数字。部署工具包似乎正在将其转换为Hex字符替换。有没有办法防止这个字符替换并仍然保持连接字符串在开发人员机器上可用?我尝试在Web.Debug.Config文件中添加替换,甚至添加%25而不仅仅是%来尝试让它替换%字符,它仍然替换完整的值。

示例:

<connectionStrings>
    <add name="MyDB" connectionString="server=Server1;uid=user1;pwd=abc123%72;database=Database1;"
</connectionStrings>

替换为

<connectionStrings>
    <add name="MyDB" connectionString="server=Server1;uid=user1;pwd=abc123r;database=Database1;"
</connectionStrings>

2 个答案:

答案 0 :(得分:11)

将连接字符串的密码部分设置为:

  

PWD = ABC123%252572

经过多次试验和错误,我发现它做了一次双通。第一遍将%2525 转换为%25 ,第二遍将%25 转换为。这就是为什么当你使用%2572时,它导致了r(%72是r的Unicode代码)。在我看来,这似乎是解析器中的一个错误。或许知识渊博的人可以给出更好的解释。

答案 1 :(得分:0)

我遇到了完全相同的问题(当然使用不同的密码)。

要保持与开发人员计算机上工作的数据库的连接字符串,我已修改发布设置以使用“不同的”#。连接字符串。

对于你的例子: web.config将包含:

<connectionStrings>
<add name="MyDB" connectionString="server=Server1;uid=user1;pwd=abc123%72;database=Database1;"
</connectionStrings>

在发布设置右键单击项目下,选择发布...,转到设置 - &gt;数据库。对于数据库MyDB,请输入

 server=Server1;uid=user1;pwd=abc123%72;database=Database1;

这使我的开发人员机器能够保留与数据库和主机的连接,通过直接或通过teamcity自动使用正确的连接字符串。