В настоящее время я работаю над приложением ASP.NET Core 2.2 / .NET Framework 4.7.2 ( Мне пришлось установить .NET Core 2.2 в качестве платформы в моем приложении .NET Framework 4.7.2 ).Мне нужно извлечь значения из моего файла appsettings.json
(значения могут измениться в время выполнения путем изменения файла appsettings.json вручную) в одноэлементной службе.Это отлично работает.Однако требуемый reloadOnChange
не работает.
Когда я изменяю значение в файле appsettings.json во время выполнения, а затем запускаю новый запрос к моей служебной логике, новые значения не извлекаются.Я уже пытался внедрить свой одноэлементный сервис как ограниченный, к сожалению, напрасно - тот же результат, без обновленной конфигурации.
Я действительно не знаю, почему обновленные значения из appsettings.json никогда не появляются в моем классе обслуживания навремя выполнения.
Мой метод CreateWebHostBuilder
выглядит следующим образом:
public IWebHostBuilder CreateWebHostBuilder()
{
var config = new ConfigurationBuilder()
.SetBasePath(Directory.GetCurrentDirectory())
.AddJsonFile(configFilePath, optional: false, reloadOnChange: true)
.Build();
return WebHost.CreateDefaultBuilder()
.UseStartup<Startup>()
.UseConfiguration(config);
}
Мой класс Startup
выглядит следующим образом:
public class Startup
{
public Startup(IConfiguration configuration)
{
Configuration = configuration;
}
public static IConfiguration Configuration { get; private set; }
public void ConfigureServices(IServiceCollection services)
{
services.Configure<AppSettings>(Configuration);
services.AddSingleton<IFruitService, FruitService>();
}
public void Configure(IApplicationBuilder app, IHostingEnvironment env)
{ }
}
Мой FruitService
выглядит следующим образомэто:
public class FruitService : IFruitService
{
private readonly IOptionsSnapshot<AppSettings> appSettings;
public PomService(IOptionsSnapshot<AppSettings> appSettings)
{
this.appSettings = appSettings;
}
public async Task<FruitMix> StartFruitMix(List<Fruit> fruits)
{
// here I would need the changed values from the appsettings.json,
// but always the same, no change in any request...
var a = appSettings.Value.Test;
var b = appSettings.Value;
var c = appSettings.Get("");
}
}
Мой AppSettings
класс очень прост:
public class AppSettings
{
public string Test { get; set; }
}
Мой appsettings.json
выглядит так:
{
"test": "1234" // during runtime when I manually change 1234 to sadf or 567 nothing happens in my service class on a new request (nor in singleton neither in scoped mode... I cannot retrieve the new value in my service class.)
}
Знаете ли вы, какполучить измененные значения в классе FruitService?
Большое спасибо