public void ConfigureServices(IServiceCollection services) { services.AddControllers(); services.ConfigureIdentity(); services.ConfigureAuthentication(Configuration) .ConfigureGoogleAuthentication(Configuration) .ConfigureFacebookAuthentication(Configuration); services.ConfigureAuthorization(); services.ConfigureMvc() .ConfigureFluentValidation(); services.ConfigureIpRateLimit(Configuration); services.ConfigureDbContext(Configuration); services.Configure <ApiBehaviorOptions>(options => { options.SuppressModelStateInvalidFilter = true; }); services.AddOptions(); services.AddMemoryCache(); services.AddHttpContextAccessor(); services.ConfigureCors(); services.AddMediatR(Assembly.Load("MyVinted.Core.Application")); #region services services.ConfigureScopedServices(); services.ConfigureSingletonServices(); #endregion services.ConfigureSettings(Configuration); services.AddAutoMapper(typeof(MapperProfile)); services.AddDataProtection(); services.AddDirectoryBrowser(); services.ConfigureServerHostedServices(); services.ConfigureSwagger(); services.AddSignalR(); services.AddSingleton <HubNamesDictionary>(s => HubNamesDictionary.Build()); services.AddSingleton <LogKeyWordsDictionary>(s => LogKeyWordsDictionary.Build()); services.Configure <ForwardedHeadersOptions>(options => { options.ForwardedHeaders = ForwardedHeaders.XForwardedFor | ForwardedHeaders.XForwardedProto; }); }