Uri*_*iil 2 .net c# configuration .net-core asp.net-core
我正在使用 .NET Core 2.2、默认模板并尝试使用 UseSetting 覆盖配置,但是我无法使其工作。在配置中将测试值设置为文件,我想在代码中使用相同的值覆盖它,然后在启动中我想获取覆盖的值。
(最初我试图添加 AzureKeyVaultProvider,但它对我不起作用,我以这个示例结束)
配置:
{
"Logging": {
"LogLevel": {
"Default": "Warning"
}
},
"AllowedHosts": "*",
"Test": "file"
}
Run Code Online (Sandbox Code Playgroud)
程序.cs:
public class Program
{
public static void Main(string[] args)
{
CreateWebHostBuilder(args).Build().Run();
}
public static IWebHostBuilder CreateWebHostBuilder(string[] args) =>
WebHost.CreateDefaultBuilder(args)
.UseStartup<Startup>()
.UseSetting("Test", "code");
}
Run Code Online (Sandbox Code Playgroud)
启动.cs:
public class Startup
{
private readonly IConfiguration _configuration;
public Startup(IConfiguration configuration)
{
_configuration = configuration;
}
public void ConfigureServices(IServiceCollection services)
{
var value = _configuration.GetValue<string>("Test");
}
// This method gets called by the runtime. Use this method to configure the HTTP request pipeline.
public void Configure(IApplicationBuilder app, IHostingEnvironment env)
{
app.Run(async (context) =>
{
await context.Response.WriteAsync("Hello World!");
});
}
}
Run Code Online (Sandbox Code Playgroud)
UseSetting适用于主机配置,在应用程序配置之前应用。在您的示例中,JSON 值覆盖了该UseSetting值。UseSetting设置主机配置中的值,该值将被复制到应用程序配置中,然后被 JSON 值覆盖。
使用ConfigureAppConfiguration和AddInMemoryCollection来达到预期的结果:
WebHost.CreateDefaultBuilder(args)
.UseStartup<Startup>()
.ConfigureAppConfiguration((ctx, configurationBuilder) =>
{
configurationBuilder.AddInMemoryCollection(new Dictionary<string, string>
{
["Test"] = "code"
});
});
Run Code Online (Sandbox Code Playgroud)
通过此设置,调用中使用的值将AddInMemoryCollection覆盖 JSON、env 等中的所有其他值。
| 归档时间: |
|
| 查看次数: |
2623 次 |
| 最近记录: |