mirror of https://github.com/abpframework/abp
				
				
				
			
			You can not select more than 25 topics
			Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
		
		
		
		
		
			
		
			
				
					
					
						
							146 lines
						
					
					
						
							6.1 KiB
						
					
					
				
			
		
		
	
	
							146 lines
						
					
					
						
							6.1 KiB
						
					
					
				| using System.IO;
 | |
| using Microsoft.AspNetCore.Builder;
 | |
| using Microsoft.AspNetCore.DataProtection;
 | |
| using Microsoft.Extensions.DependencyInjection;
 | |
| using Microsoft.Extensions.Hosting;
 | |
| using Acme.BookStore.BookManagement.EntityFrameworkCore;
 | |
| using Acme.BookStore.BookManagement.MultiTenancy;
 | |
| using StackExchange.Redis;
 | |
| using Microsoft.OpenApi.Models;
 | |
| using Swashbuckle.AspNetCore.Swagger;
 | |
| using Volo.Abp;
 | |
| using Volo.Abp.AspNetCore.MultiTenancy;
 | |
| using Volo.Abp.AspNetCore.Mvc;
 | |
| using Volo.Abp.AuditLogging.EntityFrameworkCore;
 | |
| using Volo.Abp.Autofac;
 | |
| using Volo.Abp.Caching;
 | |
| using Volo.Abp.EntityFrameworkCore;
 | |
| using Volo.Abp.EntityFrameworkCore.SqlServer;
 | |
| using Volo.Abp.Localization;
 | |
| using Volo.Abp.Modularity;
 | |
| using Volo.Abp.MultiTenancy;
 | |
| using Volo.Abp.PermissionManagement.EntityFrameworkCore;
 | |
| using Volo.Abp.SettingManagement.EntityFrameworkCore;
 | |
| using Volo.Abp.VirtualFileSystem;
 | |
| 
 | |
| namespace Acme.BookStore.BookManagement
 | |
| {
 | |
|     [DependsOn(
 | |
|         typeof(BookManagementApplicationModule),
 | |
|         typeof(BookManagementEntityFrameworkCoreModule),
 | |
|         typeof(BookManagementHttpApiModule),
 | |
|         typeof(AbpAspNetCoreMultiTenancyModule),
 | |
|         typeof(AbpAutofacModule),
 | |
|         typeof(AbpEntityFrameworkCoreSqlServerModule),
 | |
|         typeof(AbpAuditLoggingEntityFrameworkCoreModule),
 | |
|         typeof(AbpPermissionManagementEntityFrameworkCoreModule),
 | |
|         typeof(AbpSettingManagementEntityFrameworkCoreModule)
 | |
|         )]
 | |
|     public class BookManagementHttpApiHostModule : AbpModule
 | |
|     {
 | |
|         public override void ConfigureServices(ServiceConfigurationContext context)
 | |
|         {
 | |
|             var hostingEnvironment = context.Services.GetHostingEnvironment();
 | |
|             var configuration = context.Services.GetConfiguration();
 | |
| 
 | |
|             Configure<AbpDbContextOptions>(options =>
 | |
|             {
 | |
|                 options.UseSqlServer();
 | |
|             });
 | |
| 
 | |
|             Configure<MultiTenancyOptions>(options =>
 | |
|             {
 | |
|                 options.IsEnabled = MultiTenancyConsts.IsEnabled;
 | |
|             });
 | |
| 
 | |
|             if (hostingEnvironment.IsDevelopment())
 | |
|             {
 | |
|                 Configure<VirtualFileSystemOptions>(options =>
 | |
|                 {
 | |
|                     options.FileSets.ReplaceEmbeddedByPhysical<BookManagementDomainSharedModule>(Path.Combine(hostingEnvironment.ContentRootPath, string.Format("..{0}..{0}src{0}Acme.BookStore.BookManagement.Domain.Shared", Path.DirectorySeparatorChar)));
 | |
|                     options.FileSets.ReplaceEmbeddedByPhysical<BookManagementDomainModule>(Path.Combine(hostingEnvironment.ContentRootPath, string.Format("..{0}..{0}src{0}Acme.BookStore.BookManagement.Domain", Path.DirectorySeparatorChar)));
 | |
|                     options.FileSets.ReplaceEmbeddedByPhysical<BookManagementApplicationContractsModule>(Path.Combine(hostingEnvironment.ContentRootPath, string.Format("..{0}..{0}src{0}Acme.BookStore.BookManagement.Application.Contracts", Path.DirectorySeparatorChar)));
 | |
|                     options.FileSets.ReplaceEmbeddedByPhysical<BookManagementApplicationModule>(Path.Combine(hostingEnvironment.ContentRootPath, string.Format("..{0}..{0}src{0}Acme.BookStore.BookManagement.Application", Path.DirectorySeparatorChar)));
 | |
|                 });
 | |
|             }
 | |
| 
 | |
|             context.Services.AddSwaggerGen(
 | |
|                 options =>
 | |
|                 {
 | |
|                     options.SwaggerDoc("v1", new OpenApiInfo { Title = "BookManagement API", Version = "v1" });
 | |
|                     options.DocInclusionPredicate((docName, description) => true);
 | |
|                     options.CustomSchemaIds(type => type.FullName);
 | |
|                 });
 | |
| 
 | |
|             Configure<AbpLocalizationOptions>(options =>
 | |
|             {
 | |
|                 options.Languages.Add(new LanguageInfo("cs", "cs", "Čeština"));
 | |
|                 options.Languages.Add(new LanguageInfo("en", "en", "English"));
 | |
|                 options.Languages.Add(new LanguageInfo("pt-BR", "pt-BR", "Português"));
 | |
|                 options.Languages.Add(new LanguageInfo("tr", "tr", "Türkçe"));
 | |
|                 options.Languages.Add(new LanguageInfo("zh-Hans", "zh-Hans", "简体中文"));
 | |
|             });
 | |
| 
 | |
|             context.Services.AddAuthentication("Bearer")
 | |
|                 .AddIdentityServerAuthentication(options =>
 | |
|                 {
 | |
|                     options.Authority = configuration["AuthServer:Authority"];
 | |
|                     options.RequireHttpsMetadata = false;
 | |
|                     options.ApiName = "BookManagement";
 | |
|                 });
 | |
| 
 | |
|             Configure<CacheOptions>(options =>
 | |
|             {
 | |
|                 options.KeyPrefix = "BookManagement:";
 | |
|             });
 | |
| 
 | |
|             context.Services.AddStackExchangeRedisCache(options =>
 | |
|             {
 | |
|                 options.Configuration = configuration["Redis:Configuration"];
 | |
|             });
 | |
| 
 | |
|             if (!hostingEnvironment.IsDevelopment())
 | |
|             {
 | |
|                 var redis = ConnectionMultiplexer.Connect(configuration["Redis:Configuration"]);
 | |
|                 context.Services
 | |
|                     .AddDataProtection()
 | |
|                     .PersistKeysToStackExchangeRedis(redis, "BookManagement-Protection-Keys");
 | |
|             }
 | |
| 
 | |
|             Configure<AbpAspNetCoreMvcOptions>(options =>
 | |
|             {
 | |
|                 options.ConventionalControllers
 | |
|                     .Create(typeof(BookManagementApplicationModule).Assembly);
 | |
|             });
 | |
|         }
 | |
| 
 | |
|         public override void OnApplicationInitialization(ApplicationInitializationContext context)
 | |
|         {
 | |
|             var app = context.GetApplicationBuilder();
 | |
| 
 | |
|             if (!context.GetEnvironment().IsDevelopment())
 | |
|             {
 | |
|                 app.UseHsts();
 | |
|             }
 | |
|             app.UseHttpsRedirection();
 | |
|             app.UseCorrelationId();
 | |
|             app.UseVirtualFiles();
 | |
|             app.UseRouting();
 | |
|             app.UseAuthentication();
 | |
|             app.UseAuthorization();
 | |
|             if (MultiTenancyConsts.IsEnabled)
 | |
|             {
 | |
|                 app.UseMultiTenancy();
 | |
|             }
 | |
|             app.UseAbpRequestLocalization();     
 | |
|             app.UseSwagger();
 | |
|             app.UseSwaggerUI(options =>
 | |
|             {
 | |
|                 options.SwaggerEndpoint("/swagger/v1/swagger.json", "Support APP API");
 | |
|             });
 | |
|             app.UseAuditing();
 | |
|             app.UseMvcWithDefaultRouteAndArea();
 | |
|         }
 | |
|     }
 | |
| }
 |