wanshenmean
2026-03-12 f56441867f2cc77567f97a92348a5d878f0dca05
Code/WMS/WIDESEA_WMSServer/WIDESEA_WMSServer/Program.cs
@@ -11,6 +11,7 @@
using Newtonsoft.Json;
using Newtonsoft.Json.Converters;
using Newtonsoft.Json.Serialization;
using Serilog;
using WIDESEA_Core;
using WIDESEA_Core.Authorization;
using WIDESEA_Core.BaseServices;
@@ -20,33 +21,48 @@
using WIDESEA_Core.Helper;
//using WIDESEA_Core.HostedService;
using WIDESEA_Core.Middlewares;
using WIDESEA_WMSServer.BackgroundServices;
using WIDESEA_WMSServer.Filter;
var builder = WebApplication.CreateBuilder(args);
builder.Host.UseServiceProviderFactory(new AutofacServiceProviderFactory()).ConfigureContainer<ContainerBuilder>(builder =>
{
    builder.RegisterModule<AutofacModuleRegister>();//带有接口层的服务注入
    builder.RegisterModule<AutofacPropertityModuleReg>();//
    builder.RegisterModule<AutofacModuleRegister>(); // 注册接口依赖注入
    builder.RegisterModule<AutofacPropertityModuleReg>(); // 注册属性注入
}).ConfigureAppConfiguration((hostingContext, config) =>
{
    hostingContext.Configuration.ConfigureApplication();
    config.Sources.Clear();
    config.AddJsonFile("appsettings.json", optional: true, reloadOnChange: true);
}); ;
});
builder.Host.UseSerilog((context, services, loggerConfiguration) =>
{
    loggerConfiguration
        .ReadFrom.Configuration(context.Configuration)
        .ReadFrom.Services(services)
        .Enrich.FromLogContext()
        .WriteTo.Console()
        .WriteTo.File("logs/log-.txt", rollingInterval: RollingInterval.Day);
});
builder.ConfigureApplication();
//App.ExpDateTime = DateTime.Parse("2025-03-31 00:00:00");//过期时间
// App.ExpDateTime = DateTime.Parse("2025-03-31 00:00:00"); // 设置过期时间
// 2、配置服务
builder.Services.AddSingleton(new AppSettings(builder.Configuration));//注册
builder.Services.AddAllOptionRegister();//读取配置文件
builder.Services.AddMemoryCacheSetup();//缓存
// 2. 配置服务
builder.Services.AddSingleton(new AppSettings(builder.Configuration)); // 注册配置
builder.Services.AddAllOptionRegister(); // 获取配置文件
builder.Services.AddSingleton<RoundRobinService>();
builder.Services.Configure<AutoOutboundTaskOptions>(
    builder.Configuration.GetSection("AutoOutboundTask"));
builder.Services.AddMemoryCacheSetup(); // 缓存服务
builder.Services.AddWebSocketSetup();
builder.Services.AddSqlsugarSetup();//SqlSugar 启动服务
builder.Services.AddDbSetup();//Db 启动服务
builder.Services.AddInitializationHostServiceSetup();//应用初始化服务注入
//builder.Services.AddHostedService<PermissionDataHostService>();//数据权限
builder.Services.AddSqlsugarSetup(); // SqlSugar 数据库配置
builder.Services.AddDbSetup(); // Db 数据库配置
builder.Services.AddInitializationHostServiceSetup(); // 应用程序初始化服务注册
builder.Services.AddHostedService<AutoOutboundTaskBackgroundService>();  // 启动自动出库任务后台服务
// builder.Services.AddHostedService<PermissionDataHostService>(); // 权限数据服务
builder.Services.AddAutoMapperSetup();
builder.Services.AddCorsSetup();
@@ -68,7 +84,7 @@
builder.Services.AddAuthorizationSetup();
builder.Services.AddIpPolicyRateLimitSetup(builder.Configuration);//IPLimit限流 启动服务
builder.Services.AddIpPolicyRateLimitSetup(builder.Configuration); // IP限流 中间件注册
builder.Services.AddScoped<UseServiceDIAttribute>();
@@ -78,7 +94,7 @@
builder.Services.AddControllers(o =>
{
    o.Filters.Add(typeof(GlobalExceptionsFilter));//全局异常
    o.Filters.Add(typeof(GlobalExceptionsFilter)); // 全局异常处理
})
.AddNewtonsoftJson(options =>
{
@@ -99,20 +115,20 @@
var app = builder.Build();
// 3、配置中间件
app.UseMiniProfiler();//性能分析器
app.ConfigureApplication();//配置文件
app.UseApplicationSetup();//启动配置
// 3. 配置中间件
app.UseMiniProfiler(); // 性能分析
app.ConfigureApplication(); // 应用配置
app.UseApplicationSetup(); // 应用启动
app.UseAllServicesMiddle(builder.Services);
app.UseSession();
app.UseSwaggerAuthorized();
app.UseSwaggerMiddle(() => Assembly.GetExecutingAssembly().GetManifestResourceStream("WIDESEA_WMSServer.index.html") ?? throw new Exception("WIDESEA_WMSServer.index.html文件"));
app.UseSwaggerMiddle(() => Assembly.GetExecutingAssembly().GetManifestResourceStream("WIDESEA_WMSServer.index.html") ?? throw new Exception("WIDESEA_WMSServer.index.html文件不存在"));
app.UseIpLimitMiddle();
app.UseApiLogMiddleware();
//todo
//app.UseRecordAccessLogsMiddle();
// todo
// app.UseRecordAccessLogsMiddle();
DefaultFilesOptions defaultFilesOptions = new DefaultFilesOptions();