using ChouBox.Code.AppExtend; using ChouBox.Code.MiddlewareExtend; using ChouBox.Model.Entities; using ChouBox.WebApi.Filters; //using ChouBox.WebApi.Middleware; using HuanMeng.DotNetCore.CustomExtension; using HuanMeng.DotNetCore.MiddlewareExtend; using Microsoft.EntityFrameworkCore; using StackExchange.Redis; using System.Reflection; var builder = WebApplication.CreateBuilder(args); // Add services to the container. builder.Services.AddHttpClient(); builder.Services.AddHttpContextAccessor(); //添加httpContext注入访问 builder.Services.AddControllers(); // Program.cs builder.Services.AddSingleton(sp => ConnectionMultiplexer.Connect(builder.Configuration.GetConnectionString("RedisConnectionString")) ); #region 返回数据解析 //services.AddControllers(options => //{ // // 添加自定义的 ResultFilter 到全局过滤器中 // options.Filters.Add(); //}); builder.Services.AddControllers(options => { // 添加自定义的 ResultFilter 到全局过滤器中 options.Filters.Add(); //// 添加自定义的 ResultFilter 到全局过滤器中 //options.Filters.Add(); //options.Filters.Add(); }) .AddNewtonsoftJson(options => { // 配置 Newtonsoft.Json 选项 options.SerializerSettings.ReferenceLoopHandling = Newtonsoft.Json.ReferenceLoopHandling.Ignore; // 忽略循环引用 //options.SerializerSettings.ContractResolver = new CamelCasePropertyNamesContractResolver();// 首字母小写(驼峰样式) //options.SerializerSettings.ContractResolver = new LanguageContractResolver(builder.Services); options.SerializerSettings.DateFormatString = "yyyy-MM-dd HH:mm:ss";// 时间格式化 //options.SerializerSettings.Converters.Add(new StringConverter()); // 设置序列化深度为3(这里你可以根据实际需求修改这个值) options.SerializerSettings.MaxDepth = 10; //options.SerializerSettings.ContractResolver = #if !DEBUG options.SerializerSettings.Formatting = Newtonsoft.Json.Formatting.None; #endif //options.SerializerSettings.Converters.Add() // 其他配置... }); #endregion // 获取初始连接字符串 string userConnectionString = builder.Configuration.GetConnectionString("ConnectionString") ?? ""; Console.WriteLine("连接字符串:" + userConnectionString); builder.Services.AddDbContext((options) => { options.UseMySql( userConnectionString, // 推荐指定 ServerVersion,特别是生产环境 new MySqlServerVersion(new Version(5, 7, 44)), // 根据你的 MySQL 服务器版本修改 mysqlOptions => { // 可选的配置项 mysqlOptions.EnableRetryOnFailure( maxRetryCount: 5, // 最大重试次数 maxRetryDelay: TimeSpan.FromSeconds(30), // 每次重试的最大延迟时间 errorNumbersToAdd: null);// 额外要重试的 MySQL 错误代码(可选) } ); }); var mapperDomain = AppDomain.CurrentDomain.GetAssemblies().Where(it => it.FullName.Contains("ChouBox")).ToList(); builder.Services.AddAutoMapper(mapperDomain); // Learn more about configuring Swagger/OpenAPI at https://aka.ms/aspnetcore/swashbuckle builder.Services.AddEndpointsApiExplorer(); builder.Services.AddSwaggerGen(); builder.Services.AddScoped(); #region 添加跨域 var _myAllowSpecificOrigins = "_myAllowSpecificOrigins"; builder.Services.AddCustomCors(_myAllowSpecificOrigins); #endregion var app = builder.Build(); // Configure the HTTP request pipeline. if (app.Environment.IsDevelopment()) { app.UseSwagger(); app.UseSwaggerUI(); } app.UseHttpsRedirection(); app.UseAuthorization(); //使用跨域 app.UseCors(_myAllowSpecificOrigins); //执行扩展中间件 app.UseMiddlewareAll(); app.UseSignatureVerify(); // 使用响应格式化中间件(如果选择中间件方案,取消注释此行,并注释掉过滤器注册) //app.UseResponseFormatter(); app.MapControllers(); app.MapGet("/", () => $"请求成功==>{DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss")}").WithName("默认请求"); app.Run();