asp.net-core - 未应用应用服务中的嵌套应用程序设置
问题描述
我有一个 .NET 5.0 应用程序部署到 Azure 上的 Linux 应用服务。我已经设置了一个嵌套应用程序设置,但它没有被应用。
应用程序设置是ImageProcessingConfig__CompressionQualityPercentage
appsettings.json 包含:
"ImageProcessingConfig": {
"CompressionQualityPercentage": 5,
...
程序类有以下内容:
public static IHostBuilder CreateHostBuilder(string[] args) =>
Host.CreateDefaultBuilder(args)
.ConfigureWebHostDefaults(webBuilder =>
{
webBuilder.UseStartup<Startup>();
});
}
启动中的 ConfigureServices 方法:
var imageProcessingOptions = new ImageProcessingOptions ();
Configuration.Bind (ImageProcessingOptions.ImageProcessingConfig, imageProcessingOptions);
services.AddScoped<IImageProcessor> (c => new ImageProcessor (imageProcessingOptions));
解决方案
看起来这是在 ConfigureServices() 中使用 Configuration.Bind() 的结果。在进行以下更改后,它按预期工作:
Configuration.Bind (ImageProcessingOptions.ImageProcessingConfig, imageProcessingOptions);
imageProcessingOptions.CompressionQualityPercentage = int.Parse(Configuration["ImageProcessingConfig:CompressionQualityPercentage"]);
services.AddScoped<IImageProcessor> (c => new ImageProcessor (imageProcessingOptions));