10

我正在尝试将 Web 部署工具包与我们的 MVC3 项目一起使用,总体而言部署工作正常,但我们到数据库的连接字符串的密码包含一个百分号 (%) 字符,后跟两个数字。部署工具包似乎将其转换为十六进制字符替换。有没有办法防止这种字符替换并仍然保持连接字符串在开发人员机器上可用?我尝试在 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>
4

2 回答 2

13

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

密码=abc123%252572

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

于 2012-03-30T20:42:59.367 回答
0

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

为了让数据库的连接字符串在开发人员机器上工作,我修改了发布设置以使用“不同”连接字符串。

对于您的示例: web.config 将包含:

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

在发布设置下右键单击项目,选择发布...,进入设置->数据库。对于数据库 MyDB,输入

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

这允许我的开发机器保留它与数据库的连接,并且主机可以通过直接发布或通过 teamcity 自动使用正确的连接字符串。

于 2014-08-27T09:05:39.573 回答