ChouBox/ChouBox.WebApi/Program.cs
2025-04-24 00:57:14 +08:00

119 lines
4.2 KiB
C#
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

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<IConnectionMultiplexer>(sp =>
ConnectionMultiplexer.Connect(builder.Configuration.GetConnectionString("RedisConnectionString"))
);
#region
//services.AddControllers(options =>
//{
// // 添加自定义的 ResultFilter 到全局过滤器中
// options.Filters.Add<CustomResultFilter>();
//});
builder.Services.AddControllers(options =>
{
// 添加自定义的 ResultFilter 到全局过滤器中
options.Filters.Add<ResultFormatFilter>();
//// 添加自定义的 ResultFilter 到全局过滤器中
//options.Filters.Add<CustomResultFilter>();
//options.Filters.Add<CustomExceptionFilter>();
})
.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<YoudaContext>((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<ChouBoxCodeBase>();
#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();