// This method gets called by the runtime. Use this method to add services to the container. public void ConfigureServices(IServiceCollection services) { services.AddMvc().SetCompatibilityVersion(CompatibilityVersion.Version_2_2); services.AddMvc() .SetCompatibilityVersion(CompatibilityVersion.Version_2_2) .AddJsonOptions(options => { options.SerializerSettings.ReferenceLoopHandling = ReferenceLoopHandling.Ignore; }); var connectionString = Configuration["Connections:urdb"]; services.AddDbContext <ApplicationDbContext>(options => { if (EnvironmentExtensions.IsDevelopment()) { options.EnableDetailedErrors(); options.EnableSensitiveDataLogging(); } options.UseNpgsql(connectionString); }); // configure jwt authentication var key = Encoding.ASCII.GetBytes(Configuration["AppSecret"]); 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 }; }); services.AddScoped <IUnitOfWork, UnitOfWork>(); services.AddScoped <TranslationService>(); services.AddScoped <MessageService>(); services.AddScoped <LoginService>(); services.AddScoped <RegistrationService>(); }