// This method gets called by the runtime. Use this method to add services to the container. public IServiceProvider ConfigureServices(IServiceCollection services) { var builder = _servicesManager.InitContainer(); services.AddSingleton(typeof(ILogger <>), typeof(LoggerEx <>)); services.AddAutoMapper(AssemblyUtils.GetAppAssemblies()); services.AddMvc() .SetCompatibilityVersion(CompatibilityVersion.Version_2_2); // if (_neonConfig.EnableMetrics) // services.AddMetrics(); services.AddLogging(); services.AddHttpClient(); var key = Encoding.ASCII.GetBytes(Configuration.Get <NeonConfig>().JwtToken); services.AddAuthentication(x => { x.DefaultAuthenticateScheme = JwtBearerDefaults.AuthenticationScheme; x.DefaultChallengeScheme = JwtBearerDefaults.AuthenticationScheme; }) .AddJwtBearer(x => { x.RequireHttpsMetadata = false; x.SaveToken = true; x.TokenValidationParameters = new TokenValidationParameters { ValidateIssuerSigningKey = true, IssuerSigningKey = new SymmetricSecurityKey(key), ValidateIssuer = false, ValidateAudience = false }; }); if (_neonConfig.EnableSwagger) { services.AddSwaggerGen(c => { c.SwaggerDoc("v1", new Info { Title = "Leon Home control", Version = "v1.0" }); }); } services.AddDbContextPool <NeonDbContext>(options => { //var config = Configuration.Get<NeonConfig>(); var dbFullPath = $"Data Source={_neonConfig.FileSystem.RootDirectory}{_neonConfig.EventsDatabase.DatabaseDirectory}{Path.DirectorySeparatorChar}{_neonConfig.Database.ConnectionString}"; options.UseSqlite(dbFullPath); }); services.AddTransient <DbContext, NeonDbContext>(); services.AddResponseCompression(); builder.Populate(services); _container = _servicesManager.Build(); return(new AutofacServiceProvider(_container)); }