public IServiceProvider ConfigureServices(IServiceCollection services) { //MVC services.AddMvc(options => { options.Filters.Add(new CorsAuthorizationFilterFactory(DefaultCorsPolicyName)); }); //Configure CORS for angular2 UI services.AddCors(options => { options.AddPolicy(DefaultCorsPolicyName, builder => { //App:CorsOrigins in appsettings.json can contain more than one address with splitted by comma. builder //.WithOrigins(_appConfiguration["App:CorsOrigins"].Split(",", StringSplitOptions.RemoveEmptyEntries).Select(o => o.RemovePostFix("/")).ToArray()) .AllowAnyOrigin() //TODO: Will be replaced by above when Microsoft releases microsoft.aspnetcore.cors 2.0 - https://github.com/aspnet/CORS/pull/94 .AllowAnyHeader() .AllowAnyMethod(); }); }); IdentityRegistrar.Register(services); AuthConfigurer.Configure(services, _appConfiguration); //Identity server if (bool.Parse(_appConfiguration["IdentityServer:IsEnabled"])) { IdentityServerRegistrar.Register(services, _appConfiguration); } //Swagger - Enable this line and the related lines in Configure method to enable swagger UI services.AddSwaggerGen(options => { options.SwaggerDoc("v1", new Info { Title = "AbpZeroTemplate API", Version = "v1" }); options.DocInclusionPredicate((docName, description) => true); }); //Recaptcha services.AddRecaptcha(new RecaptchaOptions { SiteKey = _appConfiguration["Recaptcha:SiteKey"], SecretKey = _appConfiguration["Recaptcha:SecretKey"] }); //Hangfire (Enable to use Hangfire instead of default job manager) //services.AddHangfire(config => //{ // config.UseSqlServerStorage(_appConfiguration.GetConnectionString("Default")); //}); //Configure Abp and Dependency Injection return(services.AddAbp <AbpZeroTemplateWebHostModule>(options => { //Configure Log4Net logging options.IocManager.IocContainer.AddFacility <LoggingFacility>( f => f.UseAbpLog4Net().WithConfig("log4net.config") ); })); }