|
|
@ -1,5 +1,8 @@ |
|
|
using System.IO; |
|
|
using System; |
|
|
|
|
|
using System.IO; |
|
|
|
|
|
using System.Linq; |
|
|
using Microsoft.AspNetCore.Builder; |
|
|
using Microsoft.AspNetCore.Builder; |
|
|
|
|
|
using Microsoft.AspNetCore.Cors; |
|
|
using Microsoft.AspNetCore.DataProtection; |
|
|
using Microsoft.AspNetCore.DataProtection; |
|
|
using Microsoft.Extensions.DependencyInjection; |
|
|
using Microsoft.Extensions.DependencyInjection; |
|
|
using Microsoft.Extensions.Hosting; |
|
|
using Microsoft.Extensions.Hosting; |
|
|
@ -10,6 +13,7 @@ using Microsoft.OpenApi.Models; |
|
|
using Swashbuckle.AspNetCore.Swagger; |
|
|
using Swashbuckle.AspNetCore.Swagger; |
|
|
using Volo.Abp; |
|
|
using Volo.Abp; |
|
|
using Volo.Abp.AspNetCore.MultiTenancy; |
|
|
using Volo.Abp.AspNetCore.MultiTenancy; |
|
|
|
|
|
using Volo.Abp.AspNetCore.Mvc.UI.MultiTenancy; |
|
|
using Volo.Abp.AuditLogging.EntityFrameworkCore; |
|
|
using Volo.Abp.AuditLogging.EntityFrameworkCore; |
|
|
using Volo.Abp.Autofac; |
|
|
using Volo.Abp.Autofac; |
|
|
using Volo.Abp.Caching; |
|
|
using Volo.Abp.Caching; |
|
|
@ -28,7 +32,7 @@ namespace MyCompanyName.MyProjectName |
|
|
typeof(MyProjectNameApplicationModule), |
|
|
typeof(MyProjectNameApplicationModule), |
|
|
typeof(MyProjectNameEntityFrameworkCoreModule), |
|
|
typeof(MyProjectNameEntityFrameworkCoreModule), |
|
|
typeof(MyProjectNameHttpApiModule), |
|
|
typeof(MyProjectNameHttpApiModule), |
|
|
typeof(AbpAspNetCoreMultiTenancyModule), |
|
|
typeof(AbpAspNetCoreMvcUiMultiTenancyModule), |
|
|
typeof(AbpAutofacModule), |
|
|
typeof(AbpAutofacModule), |
|
|
typeof(AbpEntityFrameworkCoreSqlServerModule), |
|
|
typeof(AbpEntityFrameworkCoreSqlServerModule), |
|
|
typeof(AbpAuditLoggingEntityFrameworkCoreModule), |
|
|
typeof(AbpAuditLoggingEntityFrameworkCoreModule), |
|
|
@ -37,6 +41,8 @@ namespace MyCompanyName.MyProjectName |
|
|
)] |
|
|
)] |
|
|
public class MyProjectNameHttpApiHostModule : AbpModule |
|
|
public class MyProjectNameHttpApiHostModule : AbpModule |
|
|
{ |
|
|
{ |
|
|
|
|
|
private const string DefaultCorsPolicyName = "Default"; |
|
|
|
|
|
|
|
|
public override void ConfigureServices(ServiceConfigurationContext context) |
|
|
public override void ConfigureServices(ServiceConfigurationContext context) |
|
|
{ |
|
|
{ |
|
|
var hostingEnvironment = context.Services.GetHostingEnvironment(); |
|
|
var hostingEnvironment = context.Services.GetHostingEnvironment(); |
|
|
@ -105,6 +111,25 @@ namespace MyCompanyName.MyProjectName |
|
|
.AddDataProtection() |
|
|
.AddDataProtection() |
|
|
.PersistKeysToStackExchangeRedis(redis, "MyProjectName-Protection-Keys"); |
|
|
.PersistKeysToStackExchangeRedis(redis, "MyProjectName-Protection-Keys"); |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
context.Services.AddCors(options => |
|
|
|
|
|
{ |
|
|
|
|
|
options.AddPolicy(DefaultCorsPolicyName, builder => |
|
|
|
|
|
{ |
|
|
|
|
|
builder |
|
|
|
|
|
.WithOrigins( |
|
|
|
|
|
configuration["App:CorsOrigins"] |
|
|
|
|
|
.Split(",", StringSplitOptions.RemoveEmptyEntries) |
|
|
|
|
|
.Select(o => o.RemovePostFix("/")) |
|
|
|
|
|
.ToArray() |
|
|
|
|
|
) |
|
|
|
|
|
.WithAbpExposedHeaders() |
|
|
|
|
|
.SetIsOriginAllowedToAllowWildcardSubdomains() |
|
|
|
|
|
.AllowAnyHeader() |
|
|
|
|
|
.AllowAnyMethod() |
|
|
|
|
|
.AllowCredentials(); |
|
|
|
|
|
}); |
|
|
|
|
|
}); |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
public override void OnApplicationInitialization(ApplicationInitializationContext context) |
|
|
public override void OnApplicationInitialization(ApplicationInitializationContext context) |
|
|
@ -119,6 +144,7 @@ namespace MyCompanyName.MyProjectName |
|
|
app.UseCorrelationId(); |
|
|
app.UseCorrelationId(); |
|
|
app.UseVirtualFiles(); |
|
|
app.UseVirtualFiles(); |
|
|
app.UseRouting(); |
|
|
app.UseRouting(); |
|
|
|
|
|
app.UseCors(DefaultCorsPolicyName); |
|
|
app.UseAuthentication(); |
|
|
app.UseAuthentication(); |
|
|
app.UseAuthorization(); |
|
|
app.UseAuthorization(); |
|
|
if (MultiTenancyConsts.IsEnabled) |
|
|
if (MultiTenancyConsts.IsEnabled) |
|
|
|