В Azure AppService загружены неправильные настройки - PullRequest
0 голосов
/ 09 мая 2020

У меня есть основное приложение asp. net, в котором есть настройки для Identity Server. Для этого у меня есть appsettings. json, appsettings.Development. json и appsettings.Production. json.

appsettings. json:

..
  "ApplicationInsights": {
    "InstrumentationKey": ""
  },
  "IdentityServer": {
    "Clients": {
      "ApplySupportTool.Client": {
        "Profile": "IdentityServerSPA"
      }
    }
  },
  "BuildInfo": {
    "Environment": "Integration",
    "Version": "1.0.0 Beta"
  },
..

appsettings.Development. json

{
  "IdentityServer": {
    "Key": {
      "Type": "Development"
    }
  }
}

appsettings.Production. json

{
  "IdentityServer": {
    "Key": {
      "Type": "Store",
      "StoreName": "My",
      "StoreLocation": "CurrentUser",
      "Name": "[Name]"
    }
  }
}

Локально это работает без проблем, и я могу переключаться между ними, удаляя среду переменная из launchsettings:

    "environmentVariables": {
      "ASPNETCORE_ENVIRONMENT": "Development"
    }

С точки зрения загрузки файлов настроек, аналогичных шаблону по умолчанию, мой HostBuilder создается таким образом, без каких-либо специальных дополнений для файлов настроек.

    public static IHostBuilder CreateHostBuilder(string[] args)
    {
        return Host.CreateDefaultBuilder(args)
                   .UseServiceProviderFactory(new AutofacServiceProviderFactory())
                   .ConfigureWebHostDefaults(webHostBuilder =>
                   {
                       webHostBuilder
                          .UseContentRoot(Directory.GetCurrentDirectory())
                          .UseStartup<Startup>()
                          .UseAzureAppServices();
                   })
                   .UseSerilog();
    }

Когда я проверяю конструктор Startup.cs, я могу убедиться, что он также загрузил дополнительный файл.

Но когда я развертываю его в Azure, кажется, что всегда загружается разрабатываемая версия. Насколько мне известно, без установленного значения должно быть go для производства (которое работает локально). Конечно, я также попытался явно добавить ASPNETCORE_ENVIRONMENT со значением «Производство» в свой AppService. Но это тоже ничего не изменило. Должен ли я загружать это особым образом или что-то в этом роде?

1 Ответ

0 голосов
/ 09 мая 2020

Hope Development не сохраняется последней в Program.cs, который переопределяет настройку приложений и производство. json

var builder = new ConfigurationBuilder()
        .SetBasePath(env.ContentRootPath)
        .AddJsonFile("appsettings.json", optional: false, reloadOnChange: true)
        .AddJsonFile($"appsettings.{env.EnvironmentName}.json", optional: true)
        .AddEnvironmentVariables();

Также в колонке WebAPP, если вы переопределяете переменную ASPNETCORE_ENVIRONMENT, необходимо перезапустить экземпляр, чтобы отразить и перезагрузите изменения.

Также дополнительная информация в файле program.cs поможет нам найти причину root.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...