Program.cs 4.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140
  1. using System.Text.Json;
  2. using Base;
  3. using Common;
  4. using Extensions;
  5. using Filters;
  6. using Infrastructure;
  7. using Infrastructure.Model;
  8. using Microsoft.AspNetCore.Server.Kestrel.Core;
  9. using Middleware;
  10. using SummerBoot.Core;
  11. using Nacos.AspNetCore.V2;
  12. using Util;
  13. using System.Net;
  14. using System.Net.Sockets;
  15. using Tasks;
  16. ThreadPool.SetMinThreads(200, 200);
  17. var builder = WebApplication.CreateBuilder(args);
  18. // Add services to the container.
  19. builder.Services.AddControllers();
  20. // Learn more about configuring Swagger/OpenAPI at https://aka.ms/aspnetcore/swashbuckle
  21. builder.Services.AddEndpointsApiExplorer();
  22. //注入HttpContextAccessor
  23. builder.Services.AddSingleton<IHttpContextAccessor, HttpContextAccessor>();
  24. //IPRatelimit
  25. // builder.Services.AddIPRate(builder.Configuration);
  26. builder.Services.AddSession();
  27. builder.Services.AddHttpContextAccessor();
  28. // builder.Services.AddCors(option => option.AddPolicy("cors", policy => policy.AllowAnyHeader().AllowAnyMethod().AllowCredentials().SetIsOriginAllowed(_ => true)));
  29. builder.Services.Configure<KestrelServerOptions>(x => x.AllowSynchronousIO = true).Configure<IISServerOptions>(x => x.AllowSynchronousIO = true);
  30. string nacosIp = "localhost";
  31. var host = Dns.GetHostEntry(Dns.GetHostName());
  32. foreach (var ip in host.AddressList)
  33. {
  34. if (ip.AddressFamily == AddressFamily.InterNetwork && !IPAddress.IsLoopback(ip))
  35. {
  36. nacosIp = ip.ToString();
  37. }
  38. }
  39. builder.Configuration["NacosConfig:Ip"] = nacosIp;
  40. //配置中心
  41. builder.Configuration.AddNacosV2Configuration(builder.Configuration.GetSection("NacosConfig"));
  42. //服务注册
  43. builder.Services.AddNacosAspNet(builder.Configuration, "NacosConfig");
  44. //绑定整个对象到Model上
  45. builder.Services.Configure<OptionsSetting>(builder.Configuration);
  46. // builder.Configuration.AddJsonFile("iprate.json");
  47. //配置文件
  48. builder.Services.AddSingleton(new AppSettings(builder.Configuration));
  49. //请求大小限制
  50. builder.Services.AddRequestLimit(builder.Configuration);
  51. //注册REDIS 服务
  52. var openRedis = builder.Configuration["RedisServer:open"];
  53. if (openRedis == "1")
  54. {
  55. RedisServer.Initalize();
  56. }
  57. //配置文件
  58. builder.Services.AddSingleton(new AppSettings(builder.Configuration));
  59. //app服务注册
  60. builder.Services.AddAppService();
  61. builder.Services.AddMvc(options =>
  62. {
  63. // options.Filters.Add(typeof(GlobalActionMonitor));//全局注册
  64. options.Filters.Add(typeof(AuthorizationFilter));
  65. })
  66. .AddJsonOptions(options =>
  67. {
  68. //options.JsonSerializerOptions.NumberHandling = JsonNumberHandling.AllowReadingFromString | JsonNumberHandling.WriteAsString;
  69. options.JsonSerializerOptions.WriteIndented = true;
  70. options.JsonSerializerOptions.Converters.Add(new JsonConverterUtil.DateTimeConverter());
  71. options.JsonSerializerOptions.Converters.Add(new JsonConverterUtil.DateTimeNullConverter());
  72. options.JsonSerializerOptions.Converters.Add(new StringConverter());
  73. //PropertyNamingPolicy属性用于前端传过来的属性的格式策略,目前内置的仅有一种策略CamelCase
  74. options.JsonSerializerOptions.PropertyNamingPolicy = JsonNamingPolicy.CamelCase;
  75. //options.JsonSerializerOptions.PropertyNameCaseInsensitive = true;//属性可以忽略大小写格式,开启后性能会降低
  76. });
  77. builder.Services.AddSummerBoot();
  78. builder.Services.AddSummerBootFeign();
  79. builder.Services.AddHostedService<RefreshService>();
  80. var app = builder.Build();
  81. InternalApp.ServiceProvider = app.Services;
  82. InternalApp.Configuration = builder.Configuration;
  83. InternalApp.WebHostEnvironment = app.Environment;
  84. //初始化db
  85. builder.Services.AddDb(app.Environment);
  86. var workId = builder.Configuration["workId"].ParseToInt();
  87. if (app.Environment.IsDevelopment())
  88. {
  89. workId += 1;
  90. }
  91. SnowFlakeSingle.WorkId = workId;
  92. //使用全局异常中间件
  93. app.UseMiddleware<GlobalExceptionMiddleware>();
  94. app.Use(next => new RequestDelegate(
  95. async context =>
  96. {
  97. context.Request.EnableBuffering();
  98. await next(context);
  99. }
  100. ));
  101. // Configure the HTTP request pipeline.
  102. if (app.Environment.IsDevelopment())
  103. {
  104. }
  105. app.UseCors();
  106. app.UseHttpsRedirection();
  107. app.UseAuthorization();
  108. app.MapControllerRoute(
  109. name: "default",
  110. pattern: "{controller=Home}/{action=Index}/{id?}");
  111. app.MapControllers();
  112. app.Urls.Add("http://*:8005");
  113. ModelVoAdapt.Map(); //模型字段类型映射配置
  114. RabbitMQClient.Instance.Conn("MakeQueue");
  115. RabbitMQClient.Instance.Conn("MakeCallBackQueue");
  116. MakeHelper.Instance.Start("MakeCallBackQueue");
  117. // CopyData.CopyOldData();
  118. app.Run();