【问题标题】:how to handle multiple developer environment in web.config如何在 web.config 中处理多个开发者环境
【发布时间】:2015-05-06 21:04:39
【问题描述】:

假设我们有三个环境 dev、qa 和 prod。除此之外,所有开发人员都有自己的环境。您如何管理每个环境的连接字符串或应用设置?

我相信对于 dev、qa 和 prod,我可以使用 web.config 转换(网上有很多关于如何做到这一点的资源)。但我对如何以可管理的方式设置开发人员设置感到困惑。我们一直在做的一种方法是

--web.config--
<add name="oracle_user1" connectionString="Data Source=DevDB;..." providerName="Oracle.DataAccess.Client"/>
<add name="oracle_user2" connectionString="Data Source=QaDB;..." providerName="Oracle.DataAccess.Client"/>
<add name="oracle_dev" connectionString="Data Source=DevDB;..." providerName="Oracle.DataAccess.Client"/>
<add name="oracle_qa" connectionString="Data Source=QaDB;..." providerName="Oracle.DataAccess.Client"/>
<add name="oracle_prod" connectionString="Data Source=ProdDB;..." providerName="Oracle.DataAccess.Client"/>
--code--
string conString = ConfigurationManager.AppSettings["oracle_" + Environment.GetEnvironmentVariable("AppEnv")]

这是执行此操作的标准方式吗?

【问题讨论】:

    标签: asp.net .net-4.5 asp.net-web-api2


    【解决方案1】:

    我们处理这个问题的方式是为连接字符串使用单独的配置,它被排除在存储库之外。

    在 Web.Config 中,连接字符串部分如下所示:

    <connectionStrings configSource="Config\ConnectionStrings.config" />
    

    config文件夹有两个文件:

    • ConnectionStrings.Config
    • ConnectionStrings.Config.Template

    模板文件由以下内容组成:

    <connectionStrings>
        <add name="ConnectionString" connectionString="[...]" providerName="System.Data.SqlClient" />
    </connectionStrings>
    

    每个开发人员将其复制到一个名为 ConnectionStrings.config 的新文件中,并编辑连接字符串以反映他们的机器。

    您可以使用相同的方法来外部化其他配置设置。

    【讨论】:

    • 嗯,我喜欢它,但是当我们想要部署时,我们必须手动记住设置所有配置?
    • @surya 不,您可以使用 SlowCheetah 进行 web.config 转换。这将允许您根据构建配置自动转换配置文件。因此,如果您创建一个发布版本,它会将您的连接字符串节点替换为您的生产服务器的连接字符串(以及您的 web.config 中的任何其他内容 - 应用程序设置、邮件服务器等)
    猜你喜欢
    • 2010-10-10
    • 2010-10-24
    • 1970-01-01
    • 1970-01-01
    • 2019-07-24
    • 1970-01-01
    • 1970-01-01
    • 2018-01-10
    • 1970-01-01
    相关资源
    最近更新 更多