From 937a6f7b25242a6f827b1e66716f133f52bcc398 Mon Sep 17 00:00:00 2001
From: 刘磊 <1161824510@qq.com>
Date: 星期六, 19 四月 2025 15:18:39 +0800
Subject: [PATCH] 1

---
 项目代码/WMS/WIDESEA_WMSServer/WIDESEA_WMSServer/Program.cs |  155 +++++++++++++++++++++++++++++++++++++++++++++++++++
 1 files changed, 155 insertions(+), 0 deletions(-)

diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSServer/WIDESEA_WMSServer/Program.cs" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSServer/WIDESEA_WMSServer/Program.cs"
new file mode 100644
index 0000000..7b466be
--- /dev/null
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSServer/WIDESEA_WMSServer/Program.cs"
@@ -0,0 +1,155 @@
+using WIDESEA_Core.Helper;
+using WIDESEA_Core.Extensions;
+using WIDESEA_Core.Middlewares;
+using System.Reflection;
+using WIDESEA_Core.Filter;
+using Newtonsoft.Json.Converters;
+using Newtonsoft.Json.Serialization;
+using Newtonsoft.Json;
+using System.Text;
+using Microsoft.AspNetCore.Mvc.Controllers;
+using Microsoft.Extensions.DependencyInjection.Extensions;
+using Microsoft.AspNetCore.Mvc.ModelBinding.Validation;
+using WIDESEA_Core;
+using WIDESEA_Core.BaseServices;
+using Autofac.Extensions.DependencyInjection;
+using Autofac;
+using WIDESEA_WMSServer.Filter;
+using WIDESEA_Core.Authorization;
+using WIDESEA_Core.Core;
+using Swashbuckle.AspNetCore.SwaggerGen;
+using Microsoft.OpenApi.Models;
+using WIDESEA_StorageTaskServices;
+
+var builder = WebApplication.CreateBuilder(args);
+
+builder.Host.UseServiceProviderFactory(new AutofacServiceProviderFactory()).ConfigureContainer<ContainerBuilder>(builder =>
+{
+    builder.RegisterModule(new AutofacModuleRegister());//带有接口层的服务注入
+    builder.RegisterModule<AutofacPropertityModuleReg>();//
+}).ConfigureAppConfiguration((hostingContext, config) =>
+{
+    hostingContext.Configuration.ConfigureApplication();
+    config.Sources.Clear();
+    config.AddJsonFile("appsettings.json", optional: true, reloadOnChange: false);
+}); ;
+builder.ConfigureApplication();
+
+// 2、配置服务
+builder.Services.AddSingleton(new AppSettings(builder.Configuration));//注册
+builder.Services.AddAllOptionRegister();//读取配置文件
+builder.Services.AddMemoryCacheSetup();//缓存
+builder.Services.AddSqlsugarSetup();//SqlSugar 启动服务
+builder.Services.AddInitializationHostServiceSetup();//应用初始化服务注入
+builder.Services.AddDbSetup();//Db 启动服务
+
+//todo 初始化模型验证配置
+//builder.Services.UseMethodsModelParameters().UseMethodsGeneralParameters();
+//builder.Services.AddSingleton<IObjectModelValidator>(new NullObjectModelValidator());
+
+builder.Services.AddAutoMapperSetup();
+
+builder.Services.AddCorsSetup();
+builder.Services.AddMiniProfilerSetup();
+
+builder.Services.AddSwaggerSetup();
+
+builder.Services.AddJobSetup();//任务调度 启动服务
+
+builder.Services.AddHttpContextSetup();
+
+//todo
+builder.Services.AddMvc(options =>
+{
+    options.Filters.Add(typeof(ApiAuthorizeFilter));
+    //options.Filters.Add(typeof(ActionExecuteFilter));
+    //  options.SuppressAsyncSuffixInActionNames = false;
+});
+
+builder.Services.AddAuthorizationSetup();
+
+builder.Services.AddIpPolicyRateLimitSetup(builder.Configuration);//IPLimit限流 启动服务
+
+builder.Services.AddScoped<UseServiceDIAttribute>();
+
+//builder.Services.AddDistributedMemoryCache();
+builder.Services.AddSession();
+
+builder.Services.AddHttpClient();
+
+builder.Services.AddControllers(o =>
+{
+    o.Filters.Add(typeof(GlobalExceptionsFilter));//全局异常
+    //todo
+    //o.Conventions.Insert(0, new GlobalRoutePrefixFilter(new RouteAttribute(RoutePrefix.Name)));//路由
+})
+.AddNewtonsoftJson(options =>
+{
+    options.SerializerSettings.ReferenceLoopHandling = ReferenceLoopHandling.Serialize;
+    //options.SerializerSettings.ContractResolver = new DefaultContractResolver();
+    options.SerializerSettings.ContractResolver = new Newtonsoft.Json.Serialization.CamelCasePropertyNamesContractResolver();
+    options.SerializerSettings.DateFormatString = "yyyy-MM-dd HH:mm:ss";
+    options.SerializerSettings.NullValueHandling = NullValueHandling.Include;
+    options.SerializerSettings.DateTimeZoneHandling = DateTimeZoneHandling.Local;
+    options.SerializerSettings.Converters.Add(new StringEnumConverter());
+});
+// Learn more about configuring Swagger/OpenAPI at https://aka.ms/aspnetcore/swashbuckle
+builder.Services.AddEndpointsApiExplorer();
+
+builder.Services.Replace(ServiceDescriptor.Transient<IControllerActivator, ServiceBasedControllerActivator>());
+Encoding.RegisterProvider(CodePagesEncodingProvider.Instance);
+
+builder.Services.AddSwaggerGen(c =>
+{
+    // 启用XML注解
+    var xmlFile = $"{Assembly.GetExecutingAssembly().GetName().Name}.xml";
+    var xmlPath = Path.Combine(AppContext.BaseDirectory, xmlFile);
+    if (File.Exists(xmlPath))
+    {
+        c.IncludeXmlComments(xmlPath);
+    }
+});
+
+//builder.Services.AddHostedService<MyBackgroundService>();
+
+
+var app = builder.Build();
+
+// 3、配置中间件
+app.UseMiniProfiler();//性能分析器
+app.ConfigureApplication();//配置文件
+app.UseApplicationSetup();//启动配置
+app.UseSession();
+//if (app.Environment.IsDevelopment())
+//{
+    //todo
+    //app.UseSwaggerAuthorized();
+    app.UseSwaggerMiddle(() => Assembly.GetExecutingAssembly().GetManifestResourceStream("WIDESEA_WMSServer.index.html"));
+//}//判断是否需要打开swagger
+
+app.UseIpLimitMiddle();
+app.UseApiLogMiddleware();
+//todo
+//app.UseRecordAccessLogsMiddle();
+
+app.UseCors(AppSettings.app(new string[] { "Cors", "PolicyName" }));
+
+//DefaultFilesOptions defaultFilesOptions = new DefaultFilesOptions();
+//defaultFilesOptions.DefaultFileNames.Clear();
+//defaultFilesOptions.DefaultFileNames.Add("index.html");
+//app.UseDefaultFiles(defaultFilesOptions);
+app.UseStaticFiles();
+app.UseCookiePolicy();
+app.UseStatusCodePages();
+
+app.UseRouting();
+
+
+app.UseAuthentication();
+app.UseAuthorization();
+
+
+app.MapControllers();
+
+app.Run();
+

--
Gitblit v1.9.3