用于ASP.NET应用程序中的开发和生成的不同配置文件

时间:2009-02-12 23:48:26

标签: asp.net configuration web-config

在我正在开发的项目中,我们有一个包含三个配置文件的Web应用程序; Web.Config中 Web.Config.TestServer Web.Config.LiveServer

当我们发布到测试服务器时,Web.Config被重命名为Web.Config.Development,Web.Config.TestServer被重命名为Web.Config,使该配置对应用程序有效。

保持三个非常相似的配置文件是非常繁重的,并且该系统用于该项目的许多应用程序中;不只是网站。

配置的差异通常是本地目录或路径,URL,IP,端口号和电子邮件地址。

我正在寻找更好的方法。

3 个答案:

答案 0 :(得分:3)

虽然你的方法似乎很乏味,但我觉得这是最好的方法。

我曾经将所有配置保存在一个web.config文件中,只是将“生产”部分注释掉了。

在此之后不久,我不得不进行“混合”测试,其中我的查找数据来自生产服务器,但新数据正被插入到测试数据库中。那时我不得不开始修改配置块的哪些部分来评论/取消注释,这成了一场噩梦。

同样,我们让我们的服务器管理员进行从测试到生产的实际迁移,并且大多数在.NET中都不够流畅,不知道如何管理web.config文件。他们只是简单地看到.test或.prod文件并迁移正确的文件就容易得多。

你可以使用像数据库这样的东西来存储你的所有配置,但是你会遇到另一层抽象,你必须在最重要的事情上进行管理。

一旦掌握了设置两个(或三个)配置文件的诀窍或模板,管理它们就会变得容易得多,并且您可以修改测试服务器配置以进行一些独特的测试而不会有太多麻烦

答案 1 :(得分:2)

如果你有一个db服务器,你可以创建一个包含config,属性名和属性值的表,那么你所要做的就是在web.config中更改一个值,配置名称(dev,test,prod)。

如果每个配置都有不同的dbs,那么唯一不同的是连接字符串。

答案 2 :(得分:1)

使用Config Transformation,这里有一个关于它的博客。

http://blogs.msdn.com/b/webdevtools/archive/2009/05/04/web-deployment-web-config-transformation.aspx

基本上,您创建了名为web。{build configuration} .config的目标。在每个目标文件中,您可以编写转换,您可以在其中添加,删除和修改节点和属性。例子可能是

web.staging.configss

<?xml version="1.0"?> 
<configuration xmlns:xdt="http://schemas.microsoft.com/XML-Document-Transform"> 
     <connectionStrings> 
        <add name="personalDB" 
          connectionString="Server=StagingBox; Database=personal; User Id=admin; password=StagingPersonalPassword" 
          providerName="System.Data.SqlClient" xdt:Transform="Replace" xdt:Locator="Match(name)" /> 
        <add name="professionalDB" 
         connectionString="Server=StagingBox; Database=professional; User Id=professional; password=StagingProfessionalPassword" 
         providerName="System.Data.SqlClient" xdt:Transform="Replace" xdt:Locator="Match(name)"/> 
       </connectionStrings> 
</configuration>

然后通过调用MSBuild {project file} /t:TransformWebConfig /p:Configuration=Staging

执行转换