// This method gets called by the runtime. Use this method to add services to the container. public void ConfigureServices(IServiceCollection services) { services.AddAuthentication(JwtBearerDefaults.AuthenticationScheme) .AddJwtBearer(x => { x.TokenValidationParameters = new TokenValidationParameters { ValidateIssuer = true, ValidateAudience = true, ValidateLifetime = true, ValidateIssuerSigningKey = true, ValidIssuer = Configuration["Jwt:Issuer"], ValidAudience = Configuration["Jwt:Issuer"], IssuerSigningKey = new SymmetricSecurityKey(Encoding.UTF8.GetBytes(Configuration["Jwt:Key"])) }; }); //services.AddControllers().AddJsonOptions(options => //{ // options.JsonSerializerOptions.PropertyNamingPolicy = null; // options.JsonSerializerOptions.DictionaryKeyPolicy = null; //}); services.AddControllers().AddNewtonsoftJson(options => { options.SerializerSettings.ReferenceLoopHandling = Newtonsoft.Json.ReferenceLoopHandling.Ignore; options.SerializerSettings.ContractResolver = new DefaultContractResolver(); }); string connectionString = Configuration.GetConnectionString("simdb"); services.Configure <AuthCondition>(i => Configuration.GetSection("noauthpath").Bind(i)); context.BuildServices(services, new List <string> { "SchoolInMindServer.Controllers", "CoreServiceLayer.Implementation", "CommonModal.Models", "CommonModal.ORMModels", "CommonModal.ProcedureModel" }, true, false, connectionString); services.AddHttpContextAccessor(); services.Configure <MySetting>(config => Configuration.GetSection("IntSetting").Bind(config)); services.AddCors(options => { options.AddPolicy(CorsPolicy, policy => { policy.AllowAnyOrigin() .AllowAnyHeader() .AllowAnyMethod() .AllowAnyOrigin() .WithExposedHeaders("Authorization"); }); }); services.AddAuthorization(options => { options.AddPolicy(Policies.Admin, Policies.AdminPolicy()); options.AddPolicy(Policies.User, Policies.UserPolicy()); }); }