我正在向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>
我不确定我错过了什么。
想法?
答案 0 :(得分:0)
所以,我的代码中有一个错误,但下面的信息是我用来了解AppHarbor对配置变量做了什么,并允许我修复它。
此article包含有关配置变量如何工作的模糊细节,但这里是TLDR。
AppHarbor支持说明:
您的应用的生产配置不会在之前注入 应用程序实际部署,所以如果你下载构建 来自构建日志页面的工件你不会看到任何新的 配置 - 它是一个&#34; pristine&#34;构建和配置可能 如果添加/删除配置变量,附加组件或以防万一,请更改 附加提供商将新设置推送到AppHarbor。
因此,如果您需要/想要验证AppSettings,您必须有自定义方式来访问该信息(日志记录,控制器操作等)