我有一个微服务解决方案和每个项目三个appsettings,问题是我有很多次相同的URL,并且每次都很难在每个地方更改它,所以我想知道是否可以用环境变量或类似的东西替换这些URL。 ,因此我只需要更改一次即可。
我的配置示例:
最佳答案
是的,您完全可以做到!实际上,默认的WebHostBuilder
(以及从3.0开始的HostBuilder
)实际上是在使用多个配置源的方式来设置配置。
以下应用程序配置源将按by default的顺序读取:
appsettings.json
的常规配置appsettings.<environment>.json
的特定于环境的配置以后出现的配置源可以覆盖以前的源中的值。因此,您可以在
appsettings.json
中指定一个很好的默认值,然后在appsettings.Production.json
中将其覆盖为特定于环境的值。对于默认情况下合并的环境变量也是如此。您只需使用右键即可设置环境变量,然后将其覆盖您的appsettings文件中的值。
例如,要覆盖示例中的
IdentityServerBaseUrl
,必须首先考虑该设置的完整配置路径。对于JSON配置,您基本上必须使用冒号将每个键组合成实际值。因此,在这种情况下,配置路径将为AdminConfiguration:IdentityServerBaseUrl
。由于冒号在环境变量中很难用作键,因此可以用两个下划线代替。因此,您可以设置用来覆盖您的appsettings文件中的值的环境变量是
AdminConfiguration__IdentityServerBaseUrl
:set AdminConfiguration__IdentityServerBaseUrl=http://10.0.75.1:5000
这对于文件中的所有配置值都适用。
您还可以扩展默认配置设置并添加其他配置提供程序。例如,您可以添加另一个文件,例如
appsettings.global.json
,其中包含适用于所有应用程序的配置值,然后可以在所有应用程序之间共享这些配置值。为此,您只需扩展默认的构建器:public static IWebHostBuilder CreateWebHostBuilder(string[] args) =>
WebHost.CreateDefaultBuilder(args)
.ConfigureAppConfiguration(config =>
{
config.AddJsonFile("appsettings.global.json", optional: true);
})
.UseStartup<Startup>();
关于.net - 避免在appsettings中多次使用相同的网址,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/57230574/