8

目前我可以根据构建配置轻松设置 Web.config 转换,例如使用connectionString=server;..forDebugconnectionString=./SQLExpress;..for Release

但是是否可以基于 Web 发布配置文件进行一些 Web.config 转换?即connectionString=server1;..用于配置文件Server1connectionString=server2;..用于Server2

4

3 回答 3

5

我们将所有机器/配置文件特定的配置保存在单独的配置文件中,然后使用 configSource 像这样包含它们......

    <connectionStrings configSource="cstrings.config"/>

这种方式 Web.config 是相同的,不需要任何转换。我们对连接字符串、smtp 设置和应用程序设置执行此操作。

我们对 Web.config 和“机器特定”文件进行版本控制,例如 cstrings.config.production、cstrings.config.staging 等。

一旦你有了这个结构,就很容易为不同的配置文件生成图像。我们在每台机器上都有部署脚本,它们读取环境变量并进行适当的部署。例如,登台服务器构建脚本将 cstrings.config.staging 复制到 cstrings.config 等。

于 2010-06-30T04:52:21.850 回答
0

可能有一种稍微不同的方法来做到这一点。

在您的生产服务器上,在每台生产机器上的 c:\windows\system32\drivers\etc\hosts 文件中为 customdb 创建一个虚拟条目。每一个都指向您希望该机器使用的数据库。然后你只需要指向 connectionString=customdb; 适用于所有生产服务器。

唯一的缺点是您需要访问主机文件,并且需要您使用 db.

希望这可以帮助

于 2010-06-27T10:03:12.900 回答
0

我相信发布配置文件独立于构建配置文件,这有点遗憾,因为您很容易意外地将调试配置部署到生产服务器。

但是,如果您使用的是 MSDeploy,则可以在其中修改 web.config。有关更多详细信息,请参阅MSDeploy - 部署包后更改连接字符串参数

于 2010-06-24T13:49:24.023 回答