예제 #1
0
        // 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()));
        }