apphor配置变量未更新
本文关键字:更新 变量 配置 apphor | 更新日期: 2023-09-27 18:07:44
我正在将一个测试应用程序部署到apphbor,并且我正在尝试让apphbor更新部署时添加的ElephantSQL的配置变量。
这些问题确实帮助解决了我的问题:
- 网络。config as content
- app harbor已发布
- 连接字符串和构建内容
我的插件配置变量-键:ELEPHANTSQL_URL
我的自定义配置变量-键:foo值:bar
现在看看apphor文档,我所要做的就是设置一个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上看到发布值。但是当我下载构建源代码时,我仍然可以看到dev值。我读到的所有内容都说apapbor部署了发布配置并执行了转换,但是我不能让它工作。
在构建日志中,没有提到转换,我不确定这是否正常(见下文)。
时间消息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 Build在3.9秒内完成8/12/15 9:19 PM开始网站预编译
8/12/15 9:19 PM预编译完成11.24秒
8/12/15 9:19 PM开始测试
测试在1.94秒内完成
8/12/15 9:20 PM部署build
8/12/15下午9:20网站根内容检索显示日志8/12/15 9:20 PM Build成功部署
这是网页。构建下载中的配置:
<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>
我不知道我错过了什么。
想法?
所以,我的代码中有一个错误,但是下面的信息是我用来理解apphor对配置变量所做的事情并允许我修复它的。
本文包含关于配置变量如何工作的模糊细节,但这里是TLDR。
- 配置变量只适用于AppSettings;不能与连接字符串 一起使用。
- AppSettings键值必须与配置变量的名称匹配。
- 网络。配置转换发生在配置变量更新之前。
- 最后一步是用配置变量更新AppSettings。
来自apphor支持的说明:
你的应用的生产配置不会在应用程序是实际部署的,所以如果您下载构建构件从构建日志页面中您将看不到任何新的配置-这是一个"原始"构建,配置可能更改如果您添加/删除配置变量,附加组件或万一附加组件提供程序将新设置推送到apphor。
所以如果你需要/想要验证AppSettings,你必须有一个自定义的方式来访问这些信息(日志记录,控制器动作等)