/// <summary>Регистрация сервисов в контейнере приложения</summary> public void ConfigureServices(IServiceCollection services) { services // Регистрируем контекст работы с базой данных .AddDbContext <AnketTestContext>(options => options.UseSqlServer(Configuration.GetConnectionString("AnketTest.LocalDB")), ServiceLifetime.Transient); services // поддержка опций (для загрузки блоков конфигурации appsettings .AddOptions(); services // Грузим информацию о настройках Azure Blobs (в конструкторах писать IOptions<ZoneConfig>) .Configure <AzureBlobsParameters>(Configuration.GetSection("AzureBlobsParameters")); services // Регистрируем Azure Blobs .AddAzureClients(builder => { // Добавляем клиента BlobServiceClient builder.AddBlobServiceClient(Configuration.GetConnectionString("AnketTest.AzureStorage")); }); services // создаем контейнер AzureBlobs, если его не было .CreateAzureBlobsContainerIfNotExists(); services // Добавляем поддержку контроллеров (без вьюх) .AddControllers() // настройка пакета system.Text.Json (вместо Newtonsoft) таким образом, чтобы все идентификаторы не перестраивались в CamelCase а оставались без изменения .AddJsonOptions(opt => { opt.JsonSerializerOptions.PropertyNamingPolicy = null; opt.JsonSerializerOptions.Converters.Add(new JsonStringEnumConverter()); }); services // Добавляем настройки Swagger .AddSwaggerGen(c => { SwaggerFiller.FillGenOptions(c); }); }
/// <summary>Настройка HTTP request pipeline.</summary> public void Configure(IApplicationBuilder app, IWebHostEnvironment env) { // Добавляем заголовок, определяющий номер узла в кластере и версию ПО app.Use((context, next) => { context.Response.Headers.Add( "X-Web", System.Environment.MachineName + "/" + System.Reflection.Assembly.GetExecutingAssembly().GetName().Version.ToString()); return(next.Invoke()); }); // отрисовываем Swagger UI SwaggerFiller.FillApplicationBuilder(app); app.UseRouting(); app.UseEndpoints(endpoints => { endpoints.MapControllers(); }); }