[英].NET Core Console App - not setting appropriate appsettings based env variable at runtime
我正在開發 .NET Core 5 控制台應用程序,我正在嘗試加載 appsettings.[environment].json 在運行時基於我在項目屬性下調試中設置的“ASPNETCORE_ENVIRONMENT = Development”。
在 BuildConfig 方法中,我可以看到
Environment.GetEnvironmentVariable("ASPNETCORE_ENVIRONMENT")
正在正確返回“ Development ”文本並加載 2 文件(appsettings.json,appsettings.development.json)。
但是當我通過構造函數將配置傳遞給不同的 class 然后檢查該 class 中的配置時,我看到的是(appsettings.json,appsettings.production file.json)文件而不是開發?
我的項目中還沒有 appsettings.production.json 文件。
static void Main(string[] args)
{
try
{
//setting for SeriLog
var builder = new ConfigurationBuilder();
BuildConfig(builder);
Log.Logger = new LoggerConfiguration()
.MinimumLevel.Debug()
.ReadFrom.Configuration(builder.Build())
.Enrich.FromLogContext()
.WriteTo.Console()
.WriteTo.File(@"Log\Log.txt")
.CreateLogger();
Log.Logger.Information("Application Starting");
var host = Host.CreateDefaultBuilder()
.ConfigureServices((context, services) =>
{
services.AddTransient<IRIUProcess, RIUProcess>();
})
.UseSerilog()
.Build();
var svc = ActivatorUtilities.CreateInstance<RIUProcess>(host.Services);
svc.Run(args);
}
catch (Exception ex)
{
Log.Logger.Error(ex.ToString());
}
}
static void BuildConfig(IConfigurationBuilder builder)
{
builder.SetBasePath(Directory.GetCurrentDirectory())
.AddJsonFile("appsettings.json", optional: false, reloadOnChange: true)
.AddJsonFile($"appsettings.{Environment.GetEnvironmentVariable("ASPNETCORE_ENVIRONMENT")}", optional: true, reloadOnChange: true)
.AddEnvironmentVariables();
}
配置生成器返回像實體框架核心一樣配置的自我實例
//setting for SeriLog
var builder = new ConfigurationBuilder();
BuildConfig(builder);
應該
//setting for SeriLog
var builder = new ConfigurationBuilder();
builder = BuildConfig(builder);
沒有它,您的配置生成器將保持不變。 也為此調整 BuildConfig 方法。
然后您可以刪除 CreateDefaultBuilder(使用默認 AspNetCore 配置)並直接使用您的配置實例:
new HostBuilder().ConfigureHostConfiguration(a => a.AddConfiguration(builder.Build()))
然后,您的主機將具有與 SeriLog 和主機相同的配置
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.