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