ASP.NET Core Как установить переменные для Dev, Staging и Production сред - PullRequest
0 голосов
/ 21 января 2019

Это моя текущая структура проекта

  1. CentralRepo (хранит несколько файлов appsettings.json)
  2. 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но я не уверен, как установить переменную внутри нее и затем вызвать ее из моего кода.

Ответы [ 2 ]

0 голосов
/ 21 января 2019

Вы можете установить переменные среды для каждой среды в другом файле json, как показано ниже:

enter image description here

и получить переменные в Startup.cs, как показано ниже:

 public Startup(IHostingEnvironment env)
    {
        _env = env;
        Configuration = new ConfigurationBuilder()
            .SetBasePath(env.ContentRootPath)
            .AddJsonFile("appsettings.json", optional: false, reloadOnChange: true)
            .AddJsonFile($"appsettings.{env.EnvironmentName}.json", optional: true)
            .AddEnvironmentVariables()
            .Build();
    }
0 голосов
/ 21 января 2019

Вы можете установить переменную окружения в web.config с этим руководством следующим образом:

<aspNetCore processPath="dotnet"
      arguments=".\MyApp.dll"
      stdoutLogEnabled="false"
      stdoutLogFile="\\?\%home%\LogFiles\stdout"
      hostingModel="InProcess">
  <environmentVariables>
    <environmentVariable name="ASPNETCORE_ENVIRONMENT" value="Development" />
    <environmentVariable name="CONFIG_DIR" value="f:\application_config" />
  </environmentVariables>
</aspNetCore>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...