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 = "Trade 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 <TradeWebHostModule>(options => { //Configure Log4Net logging options.IocManager.IocContainer.AddFacility <LoggingFacility>( f => f.UseAbpLog4Net().WithConfig("log4net.config") ); })); }
public IServiceProvider ConfigureServices(IServiceCollection services) { //services.AddSignalR(); //services.AddCors(options => //{ // options.AddPolicy("SignalrCore", // policy => policy.AllowAnyOrigin() // .AllowAnyHeader() // .AllowAnyMethod()); //}); //services.AddSingleton<IServiceProvider, ServiceProvider>(); var ueitorPath = Path.Combine(_env.WebRootPath, _appConfiguration["App:UEditorJsonPath"]); services.AddUEditorService(ueitorPath); //MVC services.AddMvc(options => { options.Filters.Add(new AutoValidateAntiforgeryTokenAttribute()); }); var identityBuilder = IdentityRegistrar.Register(services); //Identity server if (bool.Parse(_appConfiguration["IdentityServer:IsEnabled"])) { identityBuilder.AddAbpIdentityServer(); IdentityServerRegistrar.Register(services, _appConfiguration); } AuthConfigurer.Configure(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"] }); IConfiguration configuration = _appConfiguration.GetSection("HangfireConfig"); IOptions <HangfireConfig> hangfireConfig = new ServiceCollection() .AddOptions() .Configure <HangfireConfig>(configuration) .BuildServiceProvider() .GetService <IOptions <HangfireConfig> >(); JobConfig.InitConfig(hangfireConfig.Value); ////Hangfire(Enable to use Hangfire instead of default job manager) services.AddHangfire(config => { config.UseSqlServerStorage(JobConfig.HangfireConnectionString); }); services.AddScoped <IWebResourceManager, WebResourceManager>(); 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(); }); }); AppConsts.MvcAppPath = _appConfiguration["App:ApplicationPath"]; //Configure Abp and Dependency Injection return(services.AddAbp <AbpZeroTemplateWebMvcModule>(options => { //Configure Log4Net logging options.IocManager.IocContainer.AddFacility <LoggingFacility>( f => f.UseAbpLog4Net().WithConfig("log4net.config") ); })); }
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 = "Portal API", Version = "v1" }); options.DocInclusionPredicate((docName, description) => true); 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")); }); } 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 <PortalWebHostModule>(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()); }) #if DEBUG .AddRazorRuntimeCompilation() #endif .AddNewtonsoftJson(); 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.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(); } } 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 CorsAuthorizationFilterFactory(DefaultCorsPolicyName)); }).SetCompatibilityVersion(CompatibilityVersion.Version_2_1);; 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); } //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); })); }
public IServiceProvider ConfigureServices(IServiceCollection services) { //MVC services.AddMvc(options => { options.Filters.Add(new CorsAuthorizationFilterFactory(DefaultCorsPolicyName)); }); #if FEATURE_SIGNALR_ASPNETCORE services.AddSignalR(options => { // Faster pings for testing options.KeepAliveInterval = TimeSpan.FromSeconds(5); }).AddJsonProtocol(options => { //options.PayloadSerializerSettings.Converters.Add(JsonConver); //the next settings are important in order to serialize and deserialize date times as is and not convert time zones options.PayloadSerializerSettings.Converters.Add(new IsoDateTimeConverter()); options.PayloadSerializerSettings.DateTimeZoneHandling = DateTimeZoneHandling.Unspecified; options.PayloadSerializerSettings.DateParseHandling = DateParseHandling.DateTimeOffset; }); #endif //Configure CORS for angular2 UI services.AddCors( options => options.AddPolicy( DefaultCorsPolicyName, builder => builder .AllowAnyOrigin() .AllowAnyHeader() .AllowAnyMethod() .AllowCredentials() ) ); 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 var xmls = GetXmlCommentsPath(); services.AddSwaggerGen(options => { options.SwaggerDoc("v1", new Info { Title = "Banch API", Version = "v1" }); options.DocInclusionPredicate((docName, description) => true); options.OperationFilter <FormFileOperationFilter>(); options.AddSecurityDefinition("Bearer", new ApiKeyScheme { Description = "Authorization format : Bearer {token}", Name = "Authorization", In = "header", Type = "apiKey" }); options.AddSecurityDefinition("Abp.TenantId", new ApiKeyScheme { Description = "Abp.TenantId: {Int}", Name = "Abp.TenantId", In = "header", Type = "apiKey" }); foreach (var xml in xmls) { if (File.Exists(xml)) { options.IncludeXmlComments(xml); } } //api界面新增authorize按钮 }); //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")); }); var webApisPluginsFolder = Path.Combine(WebRootPath, "WebApisPlugins"); if (!Directory.Exists(webApisPluginsFolder)) { Directory.CreateDirectory(webApisPluginsFolder); } //Configure Abp and Dependency Injection return(services.AddAbp <BanchWebHostModule>(options => { //Configure Log4Net logging options.IocManager.IocContainer.AddFacility <LoggingFacility>( f => f.UseAbpLog4Net().WithConfig("log4net.config") ); options.PlugInSources.Add(new Abp.PlugIns.FolderPlugInSource(webApisPluginsFolder)); })); }
public IServiceProvider ConfigureServices(IServiceCollection services) { // MVC services.AddControllersWithViews(options => { options.Filters.Add(new AbpAutoValidateAntiforgeryTokenAttribute()); }) .AddRazorRuntimeCompilation() .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); //Swagger - Enable this line and the related lines in Configure method to enable swagger UI services.AddSwaggerGen(options => { options.SwaggerDoc("v1", new OpenApiInfo() { Title = "Ranking 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"]; }); //Hangfire (Enable to use Hangfire instead of default job manager) services.AddHangfire(config => { config.UseSqlServerStorage(_appConfiguration.GetConnectionString("Default")); }); services.AddScoped <IWebResourceManager, WebResourceManager>(); services.AddSignalR(); services.Configure <SecurityStampValidatorOptions>(options => { options.ValidationInterval = TimeSpan.FromMinutes(30); }); services.AddAntiforgery(); services.AddHttpClient(); services.AddDistributedMemoryCache(); services.AddSwaggerGenNewtonsoftSupport(); services.AddDataProtection() .PersistKeysToFileSystem(new DirectoryInfo(Path.Combine(_hostingEnvironment.WebRootPath, "Data"))) .SetDefaultKeyLifetime(TimeSpan.FromDays(365)) .SetApplicationName(_hostingEnvironment.ApplicationName); services.AddResponseCompression(options => { options.Providers.Add <GzipCompressionProvider>(); options.Providers.Add <BrotliCompressionProvider>(); options.EnableForHttps = true; }); services.Configure <BrotliCompressionProviderOptions>(options => { options.Level = CompressionLevel.Fastest; }); services.Configure <GzipCompressionProviderOptions>(options => { options.Level = CompressionLevel.Fastest; }); 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 <NewTemplateWebMvcModule>(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_1);; services.AddSignalR(options => { options.EnableDetailedErrors = true; }); // 配置前后端分离跨域 services.AddCors( options => options.AddPolicy( _defaultCorsPolicyName, builder => 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() ) .AllowAnyHeader() .AllowAnyMethod() .AllowCredentials() ) ); IdentityRegistrar.Register(services); AuthConfigurer.Configure(services, _appConfiguration); // IdentityServer4 配置 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 = "YoyoCmsTemplate API", Version = "v1" }); //版本增强 options.SwaggerDoc("v2", new Info { Title = "这是v2版本!", Version = "v2", Description = "动态webapi管理端", TermsOfService = "https://www.baidu.com", Contact = new Contact() { Name = "https://www.baidu.com", Email = "https://www.baidu.com", Url = "https://www.baidu.com" }, }); options.DocInclusionPredicate((docName, description) => true); // 表示需要授权,授权按钮处理逻辑在静态文件 wwwroot/swagger/ui/index.html 中 options.AddSecurityDefinition("Bearer", new BasicAuthScheme()); }); //// 启用hangfire //services.AddHangfire(config => //{ // config.UseSqlServerStorage(_appConfiguration.GetConnectionString("Default")); //}); // 配置abp和依赖注入 return(services.AddAbp <YoyoCmsTemplateWebHostModule>( options => { // 配置log4net options.IocManager.IocContainer.AddFacility <LoggingFacility>(f => f.UseAbpLog4Net().WithConfig("log4net.config")); } )); }
public IServiceProvider ConfigureServices(IServiceCollection services) { #region 配置MVC与SingalR中间件 //MVC services.AddControllersWithViews(options => { options.Filters.Add(new AbpAutoValidateAntiforgeryTokenAttribute()); }) #if DEBUG .AddRazorRuntimeCompilation() #endif .AddNewtonsoftJson(options => { ////将所有枚举序列化为字符串 options.SerializerSettings.Converters.Add(new StringEnumConverter()); }) ; // Add SingalR services.AddSignalR(options => { options.EnableDetailedErrors = true; }); #endregion 配置MVC与SingalR中间件 #region 配置前后端分离跨域 // 配置前后端分离跨域 services.AddCors( options => options.AddPolicy( _defaultCorsPolicyName, builder => builder .WithOrigins( // 在appsettings.json中可以包含多个跨域地址,由逗号隔开。 _appConfiguration["App:CorsOrigins"] .Split(",", StringSplitOptions.RemoveEmptyEntries) .Select(o => o.RemovePostFix("/")) .ToArray() ) .SetIsOriginAllowedToAllowWildcardSubdomains() .AllowAnyHeader() .AllowAnyMethod() .AllowCredentials() ) ); #endregion 配置前后端分离跨域 #region 配置支付宝 services.AddYoYoAlipay(() => { var res = _appConfiguration.GetSection("Pay:Alipay").Get <AlipayOptions>(); return(res); }, (fTFConfig) => { if (fTFConfig == null) { fTFConfig = new FTFConfig(); } fTFConfig.QRCodeGenErrorImageFullPath = System.IO.Path.Combine(_env.WebRootPath, "imgs", "pay", "alipay_error.png"); fTFConfig.QRCodeIconFullPath = System.IO.Path.Combine(_env.WebRootPath, "imgs", "pay", "alipay.png"); }); #endregion 配置支付宝 services.AddHttpClient(); // Add Wchat SenparcWXConfigurer.AddWechat(services, _appConfiguration); IdentityRegistrar.Register(services); AuthConfigurer.Configure(services, _appConfiguration); // IdentityServer4 配置 if (bool.Parse(_appConfiguration["IdentityServer:IsEnabled"])) { IdentityServerRegistrar.Register(services, _appConfiguration); } #region 配置SwaggerUI if (WebConsts.SwaggerUiEnabled) { //Swagger -启用此行以及Configure方法中的相关行,以启用Swagger UI services.AddSwaggerGen(options => { options.SwaggerDoc("v1", new OpenApiInfo { Title = "52ABP-PRO API", Version = "v1", Description = "52ABP-PRO 的动态WEBAPI管理端,可以进行测试和调用API。", TermsOfService = new Uri("https://gitee.com/ABPCN/52abp-pro"), Contact = new OpenApiContact { Name = "52abp.com", Email = "*****@*****.**", Url = new Uri("https://www.52abp.com/") }, }); // 使用 camel case 的枚举 //options.DescribeStringEnumsInCamelCase(); //使用相对路径获取应用程序所在目录 options.DocInclusionPredicate((docName, description) => true); // 支持非body内容中的枚举 options.ParameterFilter <SwaggerEnumParameterFilter>(); // 对应client枚举转为字符串对应值 options.SchemaFilter <SwaggerEnumSchemaFilter>(); options.OperationFilter <SwaggerOperationIdFilter>(); options.OperationFilter <SwaggerOperationFilter>(); options.CustomDefaultSchemaIdSelector(); options.OrderActionsBy(x => x.RelativePath); options.DescribeAllParametersInCamelCase(); ConfigApiDoc(options); }); // 使用 newtonsoft.json 做swagger的序列化工具 services.AddSwaggerGenNewtonsoftSupport(); } #endregion 配置SwaggerUI if (WebConsts.HangfireDashboardEnabled) { // 启用hangfire services.AddHangfire(config => { config.UseSqlServerStorage(_appConfiguration.GetConnectionString("Default")); // config.UseRecurringJob(typeof(RecurringJobService)); //注入Hnagfire的测试服务 }); } #region 配置健康检查服务 //services.AddHealthChecks().AddSqlServer(_appConfiguration["ConnectionStrings:Default"]); //services.AddHealthChecksUI(); if (bool.Parse(_appConfiguration["HealthChecks:HealthChecksEnabled"])) { services.AddYoyoCmsHealthCheck(); 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(); } } #endregion 配置健康检查服务 // 配置abp和依赖注入 return(services.AddAbp <YoyoCmsTemplateWebHostModule>(options => { // 配置log4net options.IocManager.IocContainer.AddFacility <LoggingFacility>( f => f.UseAbpLog4Net().WithConfig("log4net.config")); } )); }
public IServiceProvider ConfigureServices(IServiceCollection services) { //MVC services.AddControllersWithViews() #if DEBUG .AddRazorRuntimeCompilation() #endif .AddNewtonsoftJson(x => x.SerializerSettings.ReferenceLoopHandling = Newtonsoft.Json.ReferenceLoopHandling.Ignore); services.AddSignalR(options => { options.EnableDetailedErrors = true; }); 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 = "/Account/Login", LogoutUrl = "/Account/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 = "Portal API", Version = "v1" }); options.DocInclusionPredicate((docName, description) => true); 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>(); if (WebConsts.GraphQL.Enabled) { services.AddAndConfigureGraphQL(); } services.Configure <SecurityStampValidatorOptions>(options => { options.ValidationInterval = TimeSpan.FromMinutes(30); }); 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(); } } services.AddDataProtection() .PersistKeysToFileSystem(new DirectoryInfo(Path.Combine(_hostingEnvironment.WebRootPath, "Data"))) .SetDefaultKeyLifetime(TimeSpan.FromDays(365)) .SetApplicationName(_hostingEnvironment.ApplicationName); services.AddResponseCompression(options => { options.Providers.Add <GzipCompressionProvider>(); options.Providers.Add <BrotliCompressionProvider>(); options.EnableForHttps = true; }); services.Configure <BrotliCompressionProviderOptions>(options => { options.Level = CompressionLevel.Fastest; }); services.Configure <GzipCompressionProviderOptions>(options => { options.Level = CompressionLevel.Fastest; }); services.AddWebMarkupMin( options => { options.AllowMinificationInDevelopmentEnvironment = true; options.AllowCompressionInDevelopmentEnvironment = true; }) .AddHtmlMinification( options => { options.MinificationSettings.RemoveRedundantAttributes = true; options.MinificationSettings.RemoveHttpProtocolFromAttributes = true; options.MinificationSettings.RemoveHttpsProtocolFromAttributes = true; }) .AddHttpCompression(); //Configure Abp and Dependency Injection return(services.AddAbp <PortalWebMvcModule>(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; }); //为React UI配置CORS services.AddCors(options => { options.AddPolicy(DefaultCorsPolicyName, builder => { //应用:在appsettings CorsOrigins。json可以包含多个由逗号分隔的地址。 builder .WithOrigins( // 应用:在appsettings CorsOrigins。json可以包含多个由逗号分隔的地址。 _appConfiguration["App:CorsOrigins"] .Split(",", StringSplitOptions.RemoveEmptyEntries) .Select(o => o.RemovePostFix("/")) .ToArray() ) .SetIsOriginAllowedToAllowWildcardSubdomains() .AllowAnyHeader() .AllowAnyMethod() .AllowCredentials(); }); }); IdentityRegistrar.Register(services); AuthConfigurer.Configure(services, _appConfiguration); //身份认证服务器 if (bool.Parse(_appConfiguration["IdentityServer:IsEnabled"])) { IdentityServerRegistrar.Register(services, _appConfiguration); } if (WebConsts.SwaggerUiEnabled) { //Swagger—启用这一行和配置方法中的相关行,以启用Swagger UI services.AddSwaggerGen(options => { options.SwaggerDoc("v1", new Info { Title = "Grace API", Version = "v1" }); options.DocInclusionPredicate((docName, description) => true); options.UseReferencedDefinitionsForEnums(); options.ParameterFilter <SwaggerEnumParameterFilter>(); options.SchemaFilter <SwaggerEnumSchemaFilter>(); options.OperationFilter <SwaggerOperationIdFilter>(); options.OperationFilter <SwaggerOperationFilter>(); options.CustomDefaultSchemaIdSelector(); //注意:这只是为了在UI上显示Authorize按钮。 //Authorize按钮的行为在wwwroot/swagger/ui/index.htm中处理 options.AddSecurityDefinition("Bearer", new BasicAuthScheme()); }); } //验证码 services.AddRecaptcha(new RecaptchaOptions { SiteKey = _appConfiguration["Recaptcha:SiteKey"], SecretKey = _appConfiguration["Recaptcha:SecretKey"] }); if (WebConsts.HangfireDashboardEnabled) { //Hangfire(支持使用Hangfire而不是默认的作业管理器) services.AddHangfire(config => { config.UseSqlServerStorage(_appConfiguration.GetConnectionString("Default")); }); } if (WebConsts.GraphQL.Enabled) { services.AddAndConfigureGraphQL(); } //配置Abp和依赖项注入 return(services.AddAbp <GraceWebHostModule>(options => { //配置Log4Net日志 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) { IdentityModelEventSource.ShowPII = true; //To show detail of error and see the problem //MVC services .AddMvc(options => options.Filters.Add(new CorsAuthorizationFilterFactory(DefaultCorsPolicyName))) .AddJsonOptions(opt => opt.SerializerSettings.ReferenceLoopHandling = ReferenceLoopHandling.Ignore); //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, _env); services.Configure <IdentityServerTokenGeneratorFacadeSettings>( _appConfiguration.GetSection(nameof(IdentityServerTokenGeneratorFacadeSettings))); services.AddScoped <IdentityServerTokenGeneratorFacade>(); } var version = System.Reflection.Assembly.GetExecutingAssembly().GetName().Version; //Swagger - Enable this line and the related lines in Configure method to enable swagger UI services.AddSwaggerGen(options => { options.SwaggerDoc("v1", new Info { Title = "FloodCitiSense API", Version = version.ToString(), }); options.DocInclusionPredicate((docName, description) => true); }); //Recaptcha services.AddRecaptcha(new RecaptchaOptions { SiteKey = _appConfiguration["Recaptcha:SiteKey"], SecretKey = _appConfiguration["Recaptcha:SecretKey"] }); //MobilePushNotification services.Configure <MobilePushNotificationConfig>( _appConfiguration.GetSection(nameof(MobilePushNotificationConfig))); //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 <FloodCitiSenseWebHostModule>(options => { var config = new LoggerConfiguration() //Configure Serilog here! .MinimumLevel.Debug() .Enrich.WithMachineName() .Enrich.WithExceptionDetails() .WriteTo.Seq(_appConfiguration["Seq:Url"], apiKey: _appConfiguration["Seq:apiKey"]) .WriteTo.Console(outputTemplate: "{Timestamp:yyyy-MM-dd HH:mm:ss.fff zzz} [{Level}] {Message} {Properties:j}{NewLine}{Exception}") .WriteTo.RollingFile("App_Data\\Logs\\log-{Date}.txt", outputTemplate: "{Timestamp:yyyy-MM-dd HH:mm:ss.fff zzz} [{Level}] {Message} {Properties:j}{NewLine}{Exception}") .CreateLogger(); //Configure Log4Net logging options.IocManager.IocContainer.AddFacility <LoggingFacility>( f => f.LogUsing(new SerilogFactory(config)) ); })); }
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 = "Bi API", Version = "v1" }); options.DocInclusionPredicate((docName, description) => true); //显示备注 options.IncludeXmlComments(GetXmlCommentsPath("Eblcu.Bi.Application")); // 注意:此处替换成所生成的XML documentation的文件名。 // Define the BearerAuth scheme that's in use options.AddSecurityDefinition("bearerAuth", new ApiKeyScheme() { Description = "JWT Authorization header using the Bearer scheme. Example: \"Authorization: Bearer {token}\"", Name = "Authorization", In = "header", Type = "apiKey" }); // Assign scope requirements to operations based on AuthorizeAttribute options.OperationFilter<SecurityRequirementsOperationFilter>(); }); //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<BiWebHostModule>(options => { //Configure Log4Net logging options.IocManager.IocContainer.AddFacility<LoggingFacility>( f => f.UseAbpLog4Net().WithConfig("log4net.config") ); }); }