Startup.cs 3.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117
  1. using System;
  2. using System.Linq;
  3. using System.Reflection;
  4. using Microsoft.AspNetCore.Builder;
  5. using Microsoft.AspNetCore.Hosting;
  6. using Microsoft.Extensions.Configuration;
  7. using Microsoft.Extensions.DependencyInjection;
  8. using Microsoft.Extensions.Logging;
  9. using Castle.Facilities.Logging;
  10. using Abp.AspNetCore;
  11. using Abp.AspNetCore.Mvc.Antiforgery;
  12. using Abp.Castle.Logging.Log4Net;
  13. using Abp.Extensions;
  14. using VberAdmin.Configuration;
  15. using VberAdmin.Identity;
  16. using Abp.AspNetCore.SignalR.Hubs;
  17. using Abp.Dependency;
  18. using Abp.Json;
  19. using Microsoft.Extensions.Hosting;
  20. using Microsoft.OpenApi.Models;
  21. using Newtonsoft.Json.Serialization;
  22. using System.IO;
  23. using Swashbuckle.AspNetCore.SwaggerUI;
  24. using VberAdmin.Swagger;
  25. namespace VberAdmin.Web.Host.Startup;
  26. public class Startup
  27. {
  28. private const string _defaultCorsPolicyName = "localhost";
  29. private const string _apiVersion = "v1";
  30. private readonly IConfigurationRoot _appConfiguration;
  31. private readonly IWebHostEnvironment _hostingEnvironment;
  32. public Startup(IWebHostEnvironment env)
  33. {
  34. _hostingEnvironment = env;
  35. _appConfiguration = env.GetAppConfiguration();
  36. }
  37. public IServiceProvider ConfigureServices(IServiceCollection services)
  38. {
  39. //MVC
  40. services.AddControllersWithViews(
  41. options => { options.Filters.Add(new AbpAutoValidateAntiforgeryTokenAttribute()); }
  42. ).AddNewtonsoftJson(options =>
  43. {
  44. options.SerializerSettings.ContractResolver = new AbpMvcContractResolver(IocManager.Instance)
  45. {
  46. NamingStrategy = new CamelCaseNamingStrategy()
  47. };
  48. });
  49. IdentityRegistrar.Register(services);
  50. AuthConfigurer.Configure(services, _appConfiguration);
  51. services.AddSignalR();
  52. // Configure CORS for angular2 UI
  53. services.AddCors(
  54. options => options.AddPolicy(
  55. _defaultCorsPolicyName,
  56. builder => builder
  57. .WithOrigins(
  58. // App:CorsOrigins in appsettings.json can contain more than one address separated by comma.
  59. _appConfiguration["App:CorsOrigins"]
  60. .Split(",", StringSplitOptions.RemoveEmptyEntries)
  61. .Select(o => o.RemovePostFix("/"))
  62. .ToArray()
  63. )
  64. .AllowAnyHeader()
  65. .AllowAnyMethod()
  66. .AllowCredentials()
  67. )
  68. );
  69. // Swagger - Enable this line and the related lines in Configure method to enable swagger UI
  70. services.ConfigureSwagger(_hostingEnvironment);
  71. // Configure Abp and Dependency Injection
  72. return services.AddAbp<VberAdminWebHostModule>(
  73. // Configure Log4Net logging
  74. options => options.IocManager.IocContainer.AddFacility<LoggingFacility>(
  75. f => f.UseAbpLog4Net().WithConfig(_hostingEnvironment.IsDevelopment()
  76. ? "log4net.config"
  77. : "log4net.Production.config"
  78. )
  79. )
  80. );
  81. }
  82. public void Configure(IApplicationBuilder app, ILoggerFactory loggerFactory)
  83. {
  84. app.UseAbp(options => { options.UseAbpRequestLocalization = false; }); // Initializes ABP framework.
  85. app.UseCors(_defaultCorsPolicyName); // Enable CORS!
  86. app.UseStaticFiles();
  87. app.UseRouting();
  88. app.UseAuthentication();
  89. app.UseAbpRequestLocalization();
  90. app.UseEndpoints(endpoints =>
  91. {
  92. endpoints.MapHub<AbpCommonHub>("/signalr");
  93. endpoints.MapControllerRoute("default", "{controller=Home}/{action=Index}/{id?}");
  94. endpoints.MapControllerRoute("defaultWithArea", "{area}/{controller=Home}/{action=Index}/{id?}");
  95. });
  96. app.Use_SwaggerUI(Assembly.GetExecutingAssembly(), "VberAdmin.Web.Host");
  97. }
  98. }