Пример #1
0
        public void ConfigureServices(IServiceCollection services)
        {
            services.AddCors();
            services.AddAuthentication(JwtBearerDefaults.AuthenticationScheme).AddJwtBearer(options =>
            {
                var secret = Configuration["HmacSecret"];
                var key    = new SymmetricSecurityKey(Encoding.UTF8.GetBytes(secret));
                options.TokenValidationParameters = new TokenValidationParameters
                {
                    IssuerSigningKey         = key,
                    RequireExpirationTime    = true,
                    ValidateIssuerSigningKey = true,
                    ValidateIssuer           = false,
                    ValidateLifetime         = true,
                    ValidateAudience         = false
                };
            });
            services.AddMvc().SetCompatibilityVersion(CompatibilityVersion.Version_2_1);
            services.AddSingleton <IApiVersionDescriptionProvider, DefaultApiVersionDescriptionProvider>();

            services.AddMvc(options =>
            {
                options.RespectBrowserAcceptHeader = true;
                options.OutputFormatters.Add(new CsvOutputFormatter(GetCsvOptions()));
                options.FormatterMappings.SetMediaTypeMappingForFormat("csv", MediaTypeHeaderValue.Parse("text/csv"));

                var policy = new AuthorizationPolicyBuilder().RequireAuthenticatedUser().Build();
                options.Filters.Add(new AuthorizeFilter(policy));
            }).AddCsvSerializerFormatters(GetCsvOptions());

            var assetRegister = new AssetRegister();

            assetRegister.ExportDependencies((type, provider) => services.AddTransient(type, _ => provider()));

            assetRegister.ExportTypeDependencies((type, provider) => services.AddTransient(type, provider));

            assetRegister.ExportSingletonDependencies((type, provider) => services.AddSingleton(type, _ => provider()));

            assetRegister.ExportSingletonTypeDependencies((type, provider) => services.AddSingleton(type, provider));

            services.ConfigureDocumentation(_apiName);


            services
            .AddEntityFrameworkNpgsql()
            .AddDbContext <AssetRegisterContext>();

            AssetRegisterContext assetRegisterContext =
                services.BuildServiceProvider().GetService <AssetRegisterContext>();

            assetRegisterContext.Database.Migrate();

            services.AddHostedService <BackgroundProcessor>();
        }