ASP.NET:在Github中保护配置文件

时间:2015-07-24 10:37:38

标签: asp.net git visual-studio continuous-deployment

在asp.net中,我们可以在appsettings中包含可包含秘密值的文件属性:

的Web.config

  <appSettings file="HiddenSettings.config">
  </appSettings>

HiddenSettings.config

<?xml version="1.0"?>
<appSettings>
  <add key="DbConnectionString" value="VALUE_IN_TEMPLATE_FILE" />
</appSettings>

在git中,我们可以简单地将HiddenSettings.config保留在git-ignore中,这样就不会签入敏感信息。

这种方法的问题是每次开发人员获取代码的第一个副本时,他/她需要手动填充秘密数据。

自动执行此操作的最佳做​​法是什么(即,没有手动操作来填充本地/目标部署环境中的机密信息)?

1 个答案:

答案 0 :(得分:2)

我最近一直在思考这个问题。到目前为止,我能想出的最好的方法是链接到一个单独的配置文件,并将该文件放到一个单独的私有存储库中。然后将该存储库作为子模块添加到实际项目中。例如:

git submodule add git@github.com:someUser/private-config.git

并且配置指向子模块的相对路径,如:

<appSettings file="../../../../private-config/The.Real.Deal.config">
    <add key="someKey" value="SAMPLE VALUE" />
</appSettings>

因此,当用户签出项目(使用初始化子模块)时,private-repo中的配置将可用。如果不是,他们可以在没有实际值的情况下下载项目,并且只能访问样本值。

与其他方法相比,这对我来说很好,但我也总是乐于接受建议。