public IServiceProvider ConfigureServices(IServiceCollection services) { // MVC services.AddControllersWithViews(options => { options.Filters.Add(new AbpAutoValidateAntiforgeryTokenAttribute()); }) #if DEBUG .AddRazorRuntimeCompilation() #endif .AddNewtonsoftJson(); if (bool.Parse(_appConfiguration["KestrelServer:IsEnabled"])) { ConfigureKestrel(services); } IdentityRegistrar.Register(services); //Identity server if (bool.Parse(_appConfiguration["IdentityServer:IsEnabled"])) { IdentityServerRegistrar.Register(services, _appConfiguration, options => options.UserInteraction = new UserInteractionOptions() { LoginUrl = "/Account/Login", LogoutUrl = "/Account/LogOut", ErrorUrl = "/Error" }); } AuthConfigurer.Configure(services, _appConfiguration); if (WebConsts.SwaggerUiEnabled) { //Swagger - Enable this line and the related lines in Configure method to enable swagger UI services.AddSwaggerGen(options => { options.SwaggerDoc("v1", new OpenApiInfo() { Title = "AbpZeroTemplate API", Version = "v1" }); options.DocInclusionPredicate((docName, description) => true); options.ParameterFilter <SwaggerEnumParameterFilter>(); options.SchemaFilter <SwaggerEnumSchemaFilter>(); options.OperationFilter <SwaggerOperationIdFilter>(); options.OperationFilter <SwaggerOperationFilter>(); options.CustomDefaultSchemaIdSelector(); }).AddSwaggerGenNewtonsoftSupport(); } //Recaptcha services.AddreCAPTCHAV3(x => { x.SiteKey = _appConfiguration["Recaptcha:SiteKey"]; x.SiteSecret = _appConfiguration["Recaptcha:SecretKey"]; }); if (WebConsts.HangfireDashboardEnabled) { //Hangfire (Enable to use Hangfire instead of default job manager) services.AddHangfire(config => { config.UseSqlServerStorage(_appConfiguration.GetConnectionString("Default")); }); } services.AddScoped <IWebResourceManager, WebResourceManager>(); services.AddSignalR(); if (WebConsts.GraphQL.Enabled) { services.AddAndConfigureGraphQL(); } services.Configure <SecurityStampValidatorOptions>(options => { options.ValidationInterval = TimeSpan.Zero; }); if (bool.Parse(_appConfiguration["HealthChecks:HealthChecksEnabled"])) { services.AddAbpZeroHealthCheck(); var healthCheckUISection = _appConfiguration.GetSection("HealthChecks")?.GetSection("HealthChecksUI"); if (bool.Parse(healthCheckUISection["HealthChecksUIEnabled"])) { services.Configure <HealthChecksUISettings>(settings => { healthCheckUISection.Bind(settings, c => c.BindNonPublicProperties = true); }); services.AddHealthChecksUI() .AddInMemoryStorage(); } } services.Configure <RazorViewEngineOptions>(options => { options.ViewLocationExpanders.Add(new RazorViewLocationExpander()); }); //Configure Abp and Dependency Injection return(services.AddAbp <AbpZeroTemplateWebMvcModule>(options => { //Configure Log4Net logging options.IocManager.IocContainer.AddFacility <LoggingFacility>( f => f.UseAbpLog4Net().WithConfig(_hostingEnvironment.IsDevelopment() ? "log4net.config" : "log4net.Production.config") ); options.PlugInSources.AddFolder(Path.Combine(_hostingEnvironment.WebRootPath, "Plugins"), SearchOption.AllDirectories); })); }
public IServiceProvider ConfigureServices(IServiceCollection services) { //MVC services.AddMvc(options => { options.Filters.Add(new AutoValidateAntiforgeryTokenAttribute()); }).SetCompatibilityVersion(CompatibilityVersion.Version_2_2); var identityBuilder = IdentityRegistrar.Register(services); //Identity server if (bool.Parse(_appConfiguration["IdentityServer:IsEnabled"])) { IdentityServerRegistrar.Register(services, _appConfiguration); } AuthConfigurer.Configure(services, _appConfiguration); if (WebConsts.SwaggerUiEnabled) { //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); options.UseReferencedDefinitionsForEnums(); options.ParameterFilter <SwaggerEnumParameterFilter>(); options.SchemaFilter <SwaggerEnumSchemaFilter>(); options.OperationFilter <SwaggerOperationIdFilter>(); options.OperationFilter <SwaggerOperationFilter>(); options.CustomDefaultSchemaIdSelector(); }); } //Recaptcha services.AddRecaptcha(new RecaptchaOptions { SiteKey = _appConfiguration["Recaptcha:SiteKey"], SecretKey = _appConfiguration["Recaptcha:SecretKey"] }); if (WebConsts.HangfireDashboardEnabled) { //Hangfire (Enable to use Hangfire instead of default job manager) services.AddHangfire(config => { config.UseSqlServerStorage(_appConfiguration.GetConnectionString("Default")); }); } services.AddScoped <IWebResourceManager, WebResourceManager>(); services.AddSignalR(); if (WebConsts.GraphQL.Enabled) { services.AddAndConfigureGraphQL(); } services.Configure <SecurityStampValidatorOptions>(options => { options.ValidationInterval = TimeSpan.Zero; }); if (bool.Parse(_appConfiguration["HealthChecks:HealthChecksEnabled"])) { services.AddAbpZeroHealthCheck(); var healthCheckUISection = _appConfiguration.GetSection("HealthChecks")?.GetSection("HealthChecksUI"); if (bool.Parse(healthCheckUISection["HealthChecksUIEnabled"])) { services.Configure <HealthChecksUISettings>(settings => { healthCheckUISection.Bind(settings, c => c.BindNonPublicProperties = true); }); services.AddHealthChecksUI(); } } //Configure Abp and Dependency Injection return(services.AddAbp <AbpZeroTemplateWebMvcModule>(options => { //Configure Log4Net logging options.IocManager.IocContainer.AddFacility <LoggingFacility>( f => f.UseAbpLog4Net().WithConfig("log4net.config") ); options.PlugInSources.AddFolder(Path.Combine(_hostingEnvironment.WebRootPath, "Plugins"), SearchOption.AllDirectories); })); }
public IServiceProvider ConfigureServices(IServiceCollection services) { //MVC services.AddMvc(options => { options.Filters.Add(new CorsAuthorizationFilterFactory(DefaultCorsPolicyName)); }).SetCompatibilityVersion(CompatibilityVersion.Version_2_2); services.AddSignalR(options => { options.EnableDetailedErrors = true; }); //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( // App:CorsOrigins in appsettings.json can contain more than one address separated by comma. _appConfiguration["App:CorsOrigins"] .Split(",", StringSplitOptions.RemoveEmptyEntries) .Select(o => o.RemovePostFix("/")) .ToArray() ) .SetIsOriginAllowedToAllowWildcardSubdomains() .AllowAnyHeader() .AllowAnyMethod() .AllowCredentials(); }); }); IdentityRegistrar.Register(services); AuthConfigurer.Configure(services, _appConfiguration); //Identity server if (bool.Parse(_appConfiguration["IdentityServer:IsEnabled"])) { IdentityServerRegistrar.Register(services, _appConfiguration); } if (WebConsts.SwaggerUiEnabled) { //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); options.UseReferencedDefinitionsForEnums(); options.ParameterFilter <SwaggerEnumParameterFilter>(); options.SchemaFilter <SwaggerEnumSchemaFilter>(); options.OperationFilter <SwaggerOperationIdFilter>(); options.OperationFilter <SwaggerOperationFilter>(); options.CustomDefaultSchemaIdSelector(); //Note: This is just for showing Authorize button on the UI. //Authorize button's behaviour is handled in wwwroot/swagger/ui/index.html options.AddSecurityDefinition("Bearer", new BasicAuthScheme()); }); } //Recaptcha services.AddRecaptcha(new RecaptchaOptions { SiteKey = _appConfiguration["Recaptcha:SiteKey"], SecretKey = _appConfiguration["Recaptcha:SecretKey"] }); if (WebConsts.HangfireDashboardEnabled) { //Hangfire(Enable to use Hangfire instead of default job manager) services.AddHangfire(config => { config.UseSqlServerStorage(_appConfiguration.GetConnectionString("Default")); }); } if (WebConsts.GraphQL.Enabled) { services.AddAndConfigureGraphQL(); } if (bool.Parse(_appConfiguration["HealthChecks:HealthChecksEnabled"])) { services.AddAbpZeroHealthCheck(); var healthCheckUISection = _appConfiguration.GetSection("HealthChecks")?.GetSection("HealthChecksUI"); if (bool.Parse(healthCheckUISection["HealthChecksUIEnabled"])) { services.Configure <HealthChecksUISettings>(settings => { healthCheckUISection.Bind(settings, c => c.BindNonPublicProperties = true); }); services.AddHealthChecksUI(); } } //Configure Abp and Dependency Injection return(services.AddAbp <AbpZeroTemplateWebHostModule>(options => { //Configure Log4Net logging options.IocManager.IocContainer.AddFacility <LoggingFacility>( f => f.UseAbpLog4Net().WithConfig("log4net.config") ); options.PlugInSources.AddFolder(Path.Combine(_hostingEnvironment.WebRootPath, "Plugins"), SearchOption.AllDirectories); })); }
public IServiceProvider ConfigureServices(IServiceCollection services) { //MVC services.AddControllersWithViews(options => { options.Filters.Add(new AbpAutoValidateAntiforgeryTokenAttribute()); }).AddNewtonsoftJson(); services.AddSignalR(options => { options.EnableDetailedErrors = true; }); //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( // App:CorsOrigins in appsettings.json can contain more than one address separated by comma. _appConfiguration["App:CorsOrigins"] .Split(",", StringSplitOptions.RemoveEmptyEntries) .Select(o => o.RemovePostFix("/")) .ToArray() ) .SetIsOriginAllowedToAllowWildcardSubdomains() .AllowAnyHeader() .AllowAnyMethod() .AllowCredentials(); }); }); IdentityRegistrar.Register(services); AuthConfigurer.Configure(services, _appConfiguration); //Identity server if (bool.Parse(_appConfiguration["IdentityServer:IsEnabled"])) { IdentityServerRegistrar.Register(services, _appConfiguration, options => options.UserInteraction = new UserInteractionOptions() { LoginUrl = "/UI/Login", LogoutUrl = "/UI/LogOut", ErrorUrl = "/Error" }); } if (WebConsts.SwaggerUiEnabled) { //Swagger - Enable this line and the related lines in Configure method to enable swagger UI services.AddSwaggerGen(options => { options.SwaggerDoc("v1", new OpenApiInfo() { Title = "AbpZeroTemplate API", Version = "v1" }); options.DocInclusionPredicate((docName, description) => true); options.ParameterFilter <SwaggerEnumParameterFilter>(); options.SchemaFilter <SwaggerEnumSchemaFilter>(); options.OperationFilter <SwaggerOperationIdFilter>(); options.OperationFilter <SwaggerOperationFilter>(); options.CustomDefaultSchemaIdSelector(); }).AddSwaggerGenNewtonsoftSupport(); } //Recaptcha services.AddRecaptcha(new RecaptchaOptions { SiteKey = _appConfiguration["Recaptcha:SiteKey"], SecretKey = _appConfiguration["Recaptcha:SecretKey"] }); if (WebConsts.HangfireDashboardEnabled) { //Hangfire(Enable to use Hangfire instead of default job manager) services.AddHangfire(config => { config.UseSqlServerStorage(_appConfiguration.GetConnectionString("Default")); }); } if (WebConsts.GraphQL.Enabled) { services.AddAndConfigureGraphQL(); } if (bool.Parse(_appConfiguration["HealthChecks:HealthChecksEnabled"])) { services.AddAbpZeroHealthCheck(); var healthCheckUISection = _appConfiguration.GetSection("HealthChecks")?.GetSection("HealthChecksUI"); if (bool.Parse(healthCheckUISection["HealthChecksUIEnabled"])) { services.Configure <HealthChecksUISettings>(settings => { healthCheckUISection.Bind(settings, c => c.BindNonPublicProperties = true); }); services.AddHealthChecksUI(); } } //Configure Abp and Dependency Injection return(services.AddAbp <AbpZeroTemplateWebHostModule>(options => { //Configure Log4Net logging options.IocManager.IocContainer.AddFacility <LoggingFacility>( f => f.UseAbpLog4Net().WithConfig(_hostingEnvironment.IsDevelopment() ? "log4net.config" : "log4net.Production.config") ); options.PlugInSources.AddFolder(Path.Combine(_hostingEnvironment.WebRootPath, "Plugins"), SearchOption.AllDirectories); })); }
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); //Note: This is just for showing Authorize button on the UI. //Authorize button's behaviour is handled in wwwroot/swagger/ui/index.html options.AddSecurityDefinition("Bearer", new BasicAuthScheme()); }); //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") ); options.PlugInSources.AddFolder(Path.Combine(_hostingEnvironment.WebRootPath, "Plugins"), SearchOption.AllDirectories); })); }