以编程方式更新各个站点的Web.config文件

时间:2015-03-07 15:54:29

标签: c# asp.net web.config-transform

我正在准备一个工具(Web应用程序),使用该工具我可以更改托管在不同Web服务器上的各种Web应用程序的web.config文件。

我尝试使用WebConfigurationManager.OpenWebConfiguration(字符串),但它只采用相对路径,但如果我将不同Web服务器web.config文件的共享位置放置,则会失败。

MSDN参考: https://msdn.microsoft.com/en-us/library/ms151456(v=vs.110).aspx

我认为,在我的情况下,我将无法使用WebConfigurationManager.OpenWebConfiguration。

只有选项是XDocument。

请建议。

1 个答案:

答案 0 :(得分:1)

在过去的项目中,我成功地使用了基础和转换文件:https://msdn.microsoft.com/en-us/library/vstudio/dd465318(v=vs.100).aspx

例如,我们的web.config.base文件中有一个连接字符串,如:

...
<connectionStrings>
    <!-- Connection String Changes will be lost when this file is
         regenerated - Please edit your transform file instead -->
    <add 
        name="MainConnectionString" 
        connectionString="(default connection string)" />

和web.config.transform文件中的条目,如下所示:

<connectionStrings>
<add name="MainConnectionString"
            connectionString="(system-specific connection string)"
            xdt:Transform="Replace"
            xdt:Locator="Match(name)"
                          />

在应用程序构建时重新创建web.config文件,在本地转换文件中定义的任何连接字符串替换默认字符串。 web.config.base文件已提交给我们的版本控制系统,而转换则不是。

因此开发人员可以有一个转换文件连接到他们的本地数据库,qa服务器有不同的转换文件,并且演示服务器再次具有不同的设置,所有这些都是最小的,因为大多数设置都保存在Web中。 config.base文件,它与存储库一起传递,只有连接字符串更改必须从一个环境维护到下一个环境。