Пример #1
0
        public void ConfigureServices(IServiceCollection services)
        {
            services.AddResponseCompression();
            services.AddControllers()
            .AddNewtonsoftJson(options =>
                               options.SerializerSettings.ReferenceLoopHandling = Newtonsoft.Json.ReferenceLoopHandling.Ignore)
            .AddFluentValidation(fv => fv.RegisterValidatorsFromAssemblyContaining <IRavenStore>());

            services.AddOptions();

            services.AddTransient <IJwtManager, JwtManager>();

            services.AddAuthentication(JwtBearerDefaults.AuthenticationScheme)
            .AddJwtBearer(options =>
            {
                options.RequireHttpsMetadata      = false;
                options.TokenValidationParameters = new TokenValidationParameters
                {
                    ValidateIssuer = true,
                    ValidIssuer    = AuthorizationOptions.ISSUER,

                    ValidateAudience = true,
                    ValidAudience    = AuthorizationOptions.AUDIENCE,

                    ValidateLifetime = true,

                    IssuerSigningKey         = AuthorizationOptions.Create(AuthorizationOptions.KEY),
                    ValidateIssuerSigningKey = true
                };
            });

            services.AddCors(o => o.AddPolicy("CorsPolicy", builder =>
            {
                builder.AllowAnyOrigin()
                .AllowAnyHeader()
                .AllowAnyMethod();
            }));

            services.AddApiVersioning(o =>
            {
                o.ReportApiVersions = true;
                o.AssumeDefaultVersionWhenUnspecified = true;
                o.DefaultApiVersion = new ApiVersion(1, 0);
            });

            services.AddSwaggerGen(c =>
            {
                c.SwaggerDoc("v1", new OpenApiInfo
                {
                    Version = "v1",
                    Title   = $"{nameof(Pegov.Nasvyazi.Api)}",
                });
                c.ResolveConflictingActions(apiDescriptions => apiDescriptions.First());
                c.CustomSchemaIds(x => x.FullName);
                c.EnableAnnotations();
            });

            services
            .AddLogging(Configuration)
            .AddPersistencePostgres(Configuration)
            .AddPersistenceRaven(Configuration)
            .AddAutoMapper(_assemblyApplication)
            .AddApplication();

            services.AddTransient <ICurrentUserService, CurrentUserService>();
            services.AddAutoMapper(_assemblyApplication);
        }