// This method gets called by the runtime. Use this method to add services to the container. public void ConfigureServices(IServiceCollection services) { #region [swagger parameter settings] var swaggerSetting = new SwaggerConfigSetting { SettingDoc = new SwaggerConfigSettingDoc { Version = "v1", OpenApiInfo = new OpenApiInfo { Title = "JWLibrary.ApiCore", Version = "v1", Description = "rest api base" } }, SettingSecurityDef = new SwaggerConfigSettingSecurityDef { Name = "Bearer", OpenApiSecurityScheme = new OpenApiSecurityScheme { Name = "Authorization", Type = SecuritySchemeType.ApiKey, Scheme = "Bearer", BearerFormat = "JWT", In = ParameterLocation.Header, Description = "JWT Authorization header using the Bearer scheme. \r\n\r\n Enter 'Bearer' [space] and then your token in the text input below.\r\n\r\nExample: \"Bearer 12345abcdef\"" } }, SettingSecurityReq = new OpenApiSecurityRequirement { { new OpenApiSecurityScheme { Reference = new OpenApiReference { Type = ReferenceType.SecurityScheme, Id = "Bearer" } }, new string[] { } } }, XmlName = Path.Combine(AppContext.BaseDirectory, "JWLibrary.ApiCore.xml") }; #endregion [swagger parameter settings] services.SwaggerConfigureServices(swaggerSetting); services.AddControllers() //.AddNewtonsoftJson(options => { // options.SerializerSettings.ContractResolver = new LowercaseContractResolver(); //}) .SetCompatibilityVersion(CompatibilityVersion.Version_3_0); services.AddVersionConfig(); //register manual service services.AccountServiceLoader(); services.WeatherServiceLoader(); services.ConfigServiceLoader(); services.AddSingleton <ISessionContext, SessionContext>(); ServiceLocator.SetLocatorProvider(services.BuildServiceProvider()); // ******************** // USE CORS // ref : https://stackoverflow.com/questions/53675850/how-to-fix-the-cors-protocol-does-not-allow-specifying-a-wildcard-any-origin // ******************** services.AddCors(options => { //options.AddPolicy("AllowAll", // builder => { // builder // .AllowAnyOrigin() // .AllowAnyMethod() // .AllowAnyHeader() // .AllowCredentials(); // }); options.AddPolicy("CorsPolicy", builder => builder.AllowAnyOrigin() .AllowAnyMethod() .AllowAnyHeader()); }); // add service for allowing caching of responses // ref : https://github.com/Cingulara/dotnet-core-web-api-caching-examples services.AddResponseCaching(); //.AddNewtonsoftJson(o => o.SerializerSettings.Converters.Insert(0, new CustomConverter())); }