public virtual void ConfigureServices(IServiceCollection services) { services.AddMvcCore(options => { options.Filters.Add <HttpGlobalExceptionFilter>(); options.Filters.Add <ValidateModelStateFilter>(); options.Filters.Add <ApiKeyAuthorizationFilter>(); }) .AddApiExplorer() .AddDataAnnotations() .SetCompatibilityVersion(CompatibilityVersion.Latest); services.AddHttpContextAccessor(); //there is a difference between AddDbContext() and AddDbContextPool(), more info https://docs.microsoft.com/en-us/ef/core/what-is-new/ef-core-2.0#dbcontext-pooling and https://stackoverflow.com/questions/48443567/adddbcontext-or-adddbcontextpool services.AddDbContextPool <EmployeesContext>(options => options.UseMySql(_configuration.GetConnectionString("MySqlDb"))); services.AddDbContextPool <CarsContext>(options => options.UseSqlServer(_configuration.GetConnectionString("MsSqlDb"))); services.Configure <ApiKeyConfiguration>(_configuration.GetSection("ApiKey")); services.AddSwaggerGen(opt => SwaggerConfigurator.Configure(opt, _configuration.GetValue <string>("ApiKey:SecretKey"))); services.Configure <PingWebsiteConfiguration>(_configuration.GetSection("PingWebsite")); services.AddHostedService <PingWebsiteBackgroundService>(); services.AddHttpClient(nameof(PingWebsiteBackgroundService)); services.AddHealthChecks(); }
public virtual void ConfigureServices(IServiceCollection services) { services.AddMvcCore(options => { options.Filters.Add <HttpGlobalExceptionFilter>(); options.Filters.Add <ApiKeyAuthorizationFilter>(); }) .AddApiExplorer() .AddDataAnnotations() .SetCompatibilityVersion(CompatibilityVersion.Latest); services.AddHttpContextAccessor(); services.AddDbContextPool <UsersContext>(options => options.UseMySql(_configuration.GetConnectionString("MySqlDb"))); services.AddTransient <INameRepository, NameCachedRepository>(); services.AddTransient <IUserService, UserService>(); services.Configure <ApiKeyConfiguration>(_configuration.GetSection("ApiKey")); services.AddSwaggerGen(opt => SwaggerConfigurator.Configure(opt, _configuration.GetValue <string>("ApiKey:SecretKey"))); services.AddHealthChecks(); services.AddMemoryCache(); }
// This method gets called by the runtime. Use this method to configure the HTTP request pipeline. public void Configuration(IAppBuilder app) { GlobalConfiguration.Configure(WebApiConfig.Register); UnityConfigurator.Configure(GlobalConfiguration.Configuration); SwaggerConfigurator.Configure(GlobalConfiguration.Configuration); HangfireConfigurator.Configure(Hangfire.GlobalConfiguration.Configuration, app); var logService = UnityConfigurator.ResolveDependency <ILogService>(); var dequeueService = UnityConfigurator.ResolveDependency <IDequeueService>(); RecurringJob.AddOrUpdate("delete-old-logs", () => logService.DeleteOldLogs(), Cron.Daily); RecurringJob.AddOrUpdate("dequeue", () => dequeueService.Execute(), Cron.Minutely); }