Мы отошли от стандартной установки среды 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".
Каков наилучший способрешить эту проблему для нас? Является ли наш подход совершенно неверным?