AppHarbor 配置变量未更新

AppHarbor Configuration Variables Not Updating

我正在将一个测试应用程序部署到 AppHarbor,我正在尝试让 AppHarbor 在部署时更新 ElephantSQL 插件的配置变量。

这些问题确实帮助解决了我的问题:

我的 AddOn 配置变量 - 密钥:ELEPHANTSQL_URL

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

现在查看 AppHarbor documentation 我所要做的就是设置一个与上面的键同名的应用设置。

这是我的 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(已设置为构建操作:内容)

  <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 中看到发布值,但是当我下载构建源时,我继续看到开发值。我读过的所有内容都说 appharbor 部署发布配置并执行转换,但我无法让它工作。

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

Time Message
8/12/15 9:18 PM Received notification, queuing build
8/12/15 9:19 PM Downloading source
8/12/15 9:19 PM Downloaded source in 0.48 seconds
8/12/15 9:19 PM Starting NuGet package restore
8/12/15 9:19 PM NuGet package restore completed Show Log 8/12/15 9:19 PM Starting build
8/12/15 9:19 PM 0 warnings
8/12/15 9:19 PM Build completed in 3.9 seconds Show Log 8/12/15 9:19 PM Starting website precompilation
8/12/15 9:19 PM Precompilation completed in 11.24 seconds
8/12/15 9:19 PM Starting tests
8/12/15 9:19 PM Tests completed in 1.94 seconds
8/12/15 9:20 PM Deploying build
8/12/15 9:20 PM Website root content retrieved Show Log 8/12/15 9:20 PM Build successfully deployed

这是构建下载中的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>

我不确定我错过了什么。

想法?

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

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

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

来自 AppHarbor 支持的说明:

The production configuration for your app is not injected before the application is actually deployed, so if you download the build artifact from the build log page you won't see any of the new configuration - it's a "pristine" build and the configuration may change if you add/remove configuration variables, add-ons or in case the add-on provider pushes new settings to AppHarbor.

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