Это моя текущая структура проекта
- CentralRepo (хранит несколько файлов appsettings.json)
- AppOne (AppOne ссылается на CentralRepo для чтения файла appsettings.json)
Пример (Program.cs):
public static IConfiguration Configuration { get; } = new ConfigurationBuilder()
.SetBasePath(ConfigurationManager.GetBasePath(Environment.GetEnvironmentVariable("CENTRAL_REPO")))
.AddJsonFile("apponesettings.json", optional: false, reloadOnChange: true)
.Build();
public static void Main(string[] args)
{
var logger = NLog.Web.NLogBuilder.ConfigureNLog("NLog.config").GetCurrentClassLogger();
var connectionString = Configuration["DatabaseConfiguration:ConnectionString"];
LogManager.Configuration.Variables["connectionString"] = connectionString;
try
{
logger.Debug("init main");
BuildWebHost(args).Run();
}
catch (Exception ex)
{
//NLog: catch setup errors
logger.Error(ex, "Stopped program because of exception");
throw;
}
finally
{
// Ensure to flush and stop internal timers/threads before application-exit (Avoid segmentation fault on Linux)
NLog.LogManager.Shutdown();
}
}
В настоящее время я использую переменную среды для установки моего пути CENTRAL_REPO.Однако я понял, что при развертывании этого на моем сервере разработки у меня может быть только одна переменная среды с таким именем.Как я могу изменить это так, чтобы у меня был один для разработки, постановки и производства?
Есть ли другой способ сделать это вместо использования переменных среды?
Я читал о файлах web.configно я не уверен, как установить переменную внутри нее и затем вызвать ее из моего кода.