如何用环境变量覆盖Blazor客户端配置? [英] How to override blazor client configuration with environment variables?

查看:38
本文介绍了如何用环境变量覆盖Blazor客户端配置?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我有可以工作的Web客户端,它使用&wwwroot/appsettings.json";文件进行配置。

现在,我只想使用环境变量来覆盖单个设置(例如,实际上会有许多任意的覆盖)。是否有类似ASP.NET Core服务器的现成使用机制(只需调用扩展方法并结合json、env。变量)?

我不是询问多个.json文件并根据环境变量在它们之间切换,这是完全不同的情况。

到目前为止,我还没有找到任何接近的东西,所以考虑一下DIY方法,我看到了一条难看的路径--将客户端配置文件移到宿主服务器中,在客户端.json文件中添加主节点(如客户端&),使用前缀为客户端&的环境变量,使用ASP.NET服务器机制合并这些数据,将其转储回文件中供客户端使用。并希望它能奏效:-)。

推荐答案

所以我遵循了DIY路径:-)如果有人喜欢,请看下面的步骤:

  • 在Web客户端wwwroot--appsettings.json、appsettings.Development.json和生产版创建3个JSON为空的文件

  • 将您的整个Web客户端配置放入位于";客户端和节点的托管服务器的appsettings.json中,例如

  • 在您的服务器启动构造函数中,像往常一样创建配置,但随后获取整个客户端节并将其取回(请参阅:)--将其转换为字符串并写入$";wwwroot/appsettings.{env.EnvironmentName}.json";(其中envIWebHostEnvironment)

就是这样--我在开发模式和生产环境中测试了它。我看到的唯一缺点是:

  • 看起来很奇怪:-)
  • 当使用VS执行时,写入的文件不是相对于二进制文件,而是相对于项目--所以当您完成时,您必须删除新创建的文件(否则在下一次运行时,VS会抱怨两个静态文件之间存在冲突)
您可以使用env覆盖这些设置。服务器端的变量使用";客户端&前缀,其余部分照常使用。

郑重声明,我并不是说这是完美的,但除了我在问题中提出的要求之外,我并没有寻找更多的东西。然而,我想做的是减少步骤,或者更好地使用一些现有的机制。感谢这些方面的改进/提示。

这篇关于如何用环境变量覆盖Blazor客户端配置?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆