Пользовательские среды в ASP .Net Core Secret Issue - PullRequest
1 голос
/ 04 октября 2019

Мы отошли от стандартной установки среды Microsoft abit в нашей фирме.

У нас есть следующие Environemnts

  • Local - Среда для локального создания файла создания докера синфраструктура, работающая в виде контейнеров
  • Разработка - среда интеграции для сторонних команд, в которой мы подключаем свои API-интерфейсы к интерфейсу, над которым они работают. Весьма нестабильно, поскольку интеграция должна быть
  • Постановка - среда, более стабильная для наших заинтересованных сторон, для проверки

Наш класс Startup.cs выглядит примерно так

    public void ConfigureLocalServices(IServiceCollection services)
    {
        services
            .AddApplicationServices(Configuration)
            .AddLocalIntegrationEvents(Configuration)
            .AddLocalLogging(Configuration);
    }

    public void ConfigureDevelopmentServices(IServiceCollection services)
    {
        services
            .AddApplicationServices(Configuration)
            .AddDevelopmentLogging(Configuration)
            .AddDevelopmentIntegrationEvents(Configuration);
    }

Как вы видите, это красиво и аккуратно, и мы настраиваем наше приложение для каждой среды.

Теперь перейдем к нашей проблеме - из-за того, что веб-конструктор по умолчанию добавляет пользовательские секреты, только если среда является разработкой (которая, как японимать, что это среда по умолчанию, которую вы должны использовать, если вы работаете локально) у нас возникают проблемы с исключениями времени выполнения, когда сертификат HTTPS kestrel не загружается, поскольку этот секрет теперь отсутствует "Kestrel:Certificates:Development:Password": "100e0e22-09ea-40e4-bef9-469289bf8786".

Я временно разрешилвыполняя эту проблему

        public static IWebHostBuilder CreateWebHostBuilder(string[] args) =>
        WebHost.CreateDefaultBuilder(args)
            .ConfigureAppConfiguration((hostingContext, config) =>
            {
                //Load in secrets if environment is local as well to get our HTTPS certs loaded correctly
                if (hostingContext.HostingEnvironment.EnvironmentName.Equals("Local", StringComparison.InvariantCultureIgnoreCase))
                    config.AddUserSecrets<Startup>();

            })
             .UseStartup<Startup>()
             .UseSerilog();

Некоторые разработчики имеют секреты, установленные специально для ДРУГОЙ среды, и это вызывает больше проблем во время выполнения.

Насколько я понимаю, секретные файлы не зависят от средыпоэтому мы не можем добавить в "Local Secrets".

Каков наилучший способрешить эту проблему для нас? Является ли наш подход совершенно неверным?

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