| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117 |
- using System;
- using System.Linq;
- using System.Reflection;
- using Microsoft.AspNetCore.Builder;
- using Microsoft.AspNetCore.Hosting;
- using Microsoft.Extensions.Configuration;
- using Microsoft.Extensions.DependencyInjection;
- using Microsoft.Extensions.Logging;
- using Castle.Facilities.Logging;
- using Abp.AspNetCore;
- using Abp.AspNetCore.Mvc.Antiforgery;
- using Abp.Castle.Logging.Log4Net;
- using Abp.Extensions;
- using VberAdmin.Configuration;
- using VberAdmin.Identity;
- using Abp.AspNetCore.SignalR.Hubs;
- using Abp.Dependency;
- using Abp.Json;
- using Microsoft.Extensions.Hosting;
- using Microsoft.OpenApi.Models;
- using Newtonsoft.Json.Serialization;
- using System.IO;
- using Swashbuckle.AspNetCore.SwaggerUI;
- using VberAdmin.Swagger;
- namespace VberAdmin.Web.Host.Startup;
- public class Startup
- {
- private const string _defaultCorsPolicyName = "localhost";
- private const string _apiVersion = "v1";
- private readonly IConfigurationRoot _appConfiguration;
- private readonly IWebHostEnvironment _hostingEnvironment;
- public Startup(IWebHostEnvironment env)
- {
- _hostingEnvironment = env;
- _appConfiguration = env.GetAppConfiguration();
- }
- public IServiceProvider ConfigureServices(IServiceCollection services)
- {
- //MVC
- services.AddControllersWithViews(
- options => { options.Filters.Add(new AbpAutoValidateAntiforgeryTokenAttribute()); }
- ).AddNewtonsoftJson(options =>
- {
- options.SerializerSettings.ContractResolver = new AbpMvcContractResolver(IocManager.Instance)
- {
- NamingStrategy = new CamelCaseNamingStrategy()
- };
- });
- IdentityRegistrar.Register(services);
- AuthConfigurer.Configure(services, _appConfiguration);
- services.AddSignalR();
- // Configure CORS for angular2 UI
- 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()
- )
- );
- // Swagger - Enable this line and the related lines in Configure method to enable swagger UI
- services.ConfigureSwagger(_hostingEnvironment);
- // Configure Abp and Dependency Injection
- return services.AddAbp<VberAdminWebHostModule>(
- // Configure Log4Net logging
- options => options.IocManager.IocContainer.AddFacility<LoggingFacility>(
- f => f.UseAbpLog4Net().WithConfig(_hostingEnvironment.IsDevelopment()
- ? "log4net.config"
- : "log4net.Production.config"
- )
- )
- );
- }
- public void Configure(IApplicationBuilder app, ILoggerFactory loggerFactory)
- {
- app.UseAbp(options => { options.UseAbpRequestLocalization = false; }); // Initializes ABP framework.
- app.UseCors(_defaultCorsPolicyName); // Enable CORS!
- app.UseStaticFiles();
- app.UseRouting();
- app.UseAuthentication();
- app.UseAbpRequestLocalization();
- app.UseEndpoints(endpoints =>
- {
- endpoints.MapHub<AbpCommonHub>("/signalr");
- endpoints.MapControllerRoute("default", "{controller=Home}/{action=Index}/{id?}");
- endpoints.MapControllerRoute("defaultWithArea", "{area}/{controller=Home}/{action=Index}/{id?}");
- });
- app.Use_SwaggerUI(Assembly.GetExecutingAssembly(), "VberAdmin.Web.Host");
- }
- }
|