119 lines
4.2 KiB
C#
119 lines
4.2 KiB
C#
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();
|
||
|
||
|