AppHarbor配置变量未更新

时间:2015-08-13 01:28:36

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

我正在向AppHarbor部署测试应用程序,并且我试图让AppHarbor在部署时更新ElephantSQL插件的配置变量。

这些问题确实有助于解决我的问题:

我的AddOn配置变量 - 键: ELEPHANTSQL_URL

我的自定义配置变量 - 键: foo 值: bar

现在查看AppHarbor documentation我应该做的就是设置一个appsetting,使其与上面的键同名。

所以这是我的web.config:

  <connectionStrings>
    <add name="ELEPHANTSQL_URL" connectionString="Server=localhost;Database=foo;User Id=bar;Password=baz;" providerName="Npgsql" />
  </connectionStrings>
  <appSettings>
    <add key="ELEPHANTSQL_URL" value="dev"/>
    <add key="foo" value="baz"/>
  </appSettings>

这是我的web.release.config(已设置为Build Action:Content)

  <connectionStrings>
    <add name="ELEPHANTSQL_URL" connectionString="release" providerName="Npgsql" xdt:Transform="Replace" />
  </connectionStrings>
  <appSettings>
    <add key="ELEPHANTSQL_URL" value="release" xdt:Transform="Replace" />
    <add key="foo" value="release" xdt:Transform="Replace" />
  </appSettings>

我希望在web.config中看到发布值,但是当我下载构建源时,我会继续看到dev值。我读过的所有内容都说appharbor部署了发布配置并执行转换,但我无法让它工作。

在构建日志中,没有提及转换,我不确定这是否正常(见下文)。

  

时间讯息
  8/12/15 9:18 PM收到通知,排队建设
  8/12/15 9:19 PM下载来源
  8/12/15 9:19 PM在0.48秒内下载源   8/12/15 9:19 PM开始NuGet包恢复
  8/12/15 9:19 PM NuGet包恢复完成显示日志   8/12/15 9:19 PM开始构建
  8/12/15 9:19 PM 0警告
  8/12/15 9:19 PM构建在3.9秒内完成显示日志   8/12/15 9:19 PM开始网站预编译
  8/12/15 9:19 PM预编译在11.24秒完成
  8/12/15 9:19 PM开始测试
  8/12/15 9:19 PM测试在1.94秒内完成   8/12/15 9:20 PM部署构建
  8/12/15 9:20 PM检索网站根内容显示日志   8/12/15 9:20 PM构建成功部署

以下是构建下载中的web.config:

  <connectionStrings>
        <add name="ELEPHANTSQL_URL" connectionString="Server=localhost;Database=foo;User Id=bar;Password=baz;" providerName="Npgsql" />
  </connectionStrings>
  <appSettings>
    <add key="ELEPHANTSQL_URL" value="dev" />
    <add key="foo" value="baz" />
  </appSettings>

我不确定我错过了什么。

想法?

1 个答案:

答案 0 :(得分:0)

所以,我的代码中有一个错误,但下面的信息是我用来了解AppHarbor对配置变量做了什么,并允许我修复它。

article包含有关配置变量如何工作的模糊细节,但这里是TLDR。

  1. 配置变量仅适用于AppSettings;你不能将它们与连接字符串一起使用
  2. AppSettings键值必须与配置变量的名称匹配。
  3. Web配置转换发生在配置变量更新之前。
  4. 最后一步是使用配置变量更新AppSetting。
  5. AppHarbor支持说明:

      

    您的应用的生产配置不会在之前注入   应用程序实际部署,所以如果你下载构建   来自构建日志页面的工件你不会看到任何新的   配置 - 它是一个&#34; pristine&#34;构建和配置可能   如果添加/删除配置变量,附加组件或以防万一,请更改   附加提供商将新设置推送到AppHarbor。

    因此,如果您需要/想要验证AppSettings,您必须有自定义方式来访问该信息(日志记录,控制器操作等)