5

是否可以根据选定的 Web 发布配置文件更改连接字符串(或只是服务器主机)?也许使用Web.config 转换或其他方式?

我的意思是配置文件“测试”将连接字符串“MyConnString”(在已发布的 Web.config 中)更改"Data Source='example.com,14333;..."为配置文件“生产” - 到"Data Source=./SQLExpress;..."

4

1 回答 1

14

这正是创建 Web 配置转换的目的。您在帖子中提供的链接有一个专门针对连接字符串执行此操作的演练。

要开始转换,请在项目资源管理器中右键单击 web.config 文件并选择“添加配置转换”。假设您的解决方案配置中有 ConfigA 和 ConfigB,将会添加两个新文件,Web.ConfigA.config 和 Web.ConfigB.config。

如果您打开这些新文件,除了一堆注释之外,它们将是非常空的。它们实际上包含一个连接字符串示例,您可以使用它 - 它看起来像这样:

<connectionStrings>
  <add name="MyDB" 
    connectionString="Data Source=ReleaseSQLServer;Initial Catalog=MyReleaseDB;Integrated Security=True" 
    xdt:Transform="SetAttributes" xdt:Locator="Match(name)"/>
</connectionStrings>

取消注释此部分,并将“name”属性更改为基本 web.config 文件中连接字符串的名称。将“connectionString”属性设置为要用于 ConfigA 的实际值。所以,像这样:

<connectionStrings>
  <add name="myConnectionString" 
    connectionString="Data Source=ConfigASqlServer;Initial Catalog=ConfigADatabase;Integrated Security=True" 
    xdt:Transform="SetAttributes" xdt:Locator="Match(name)"/>
</connectionStrings>

使用所需的 ConfigB 连接字符串对 Web.ConfigB.config 文件重复该过程。

现在,当您在 Visual Studio 中使用 Publish 命令时,它会自动转换基本 web.config 文件,并将“connectionString”属性设置为您在发布时所处的任何配置。

于 2010-06-17T21:17:39.887 回答