using Autofac; using Autofac.Extensions.DependencyInjection; using Bunny.Common; using Bunny.Common.Context.Middleware; using Bunny.Service.WebSocket; using Microsoft.AspNetCore.Mvc.Controllers; using Microsoft.Extensions.DependencyInjection.Extensions; namespace Bunny.WebApi.Configuration; public class BaseConfig(WebApplicationBuilder builder) { /// /// 初始化 /// public void Initialize() { // 配置跨域 UseCors(); // 配置日志相关 builder.Logging.AddLog4Net("Configuration/log4net.config"); // 添加 ASP.NET 自带缓存 builder.Services.AddMemoryCache(); // 自定义时间格式 builder.Services.AddControllers().AddJsonOptions(options => options.JsonSerializerOptions.Converters.Add(new JsonDateTimeConverter())); // 添加使用自定义配置文件 builder.Services.AddSingleton(new AppSettings(builder.Configuration)); builder.WebHost.ConfigureKestrel((_, options) => { // 设置文件最大上传大小 options.Limits.MaxRequestBodySize = 1024 * 1024 * 100; }); // 使用 AddAutofac 注册服务 builder.Host.UseServiceProviderFactory(new AutofacServiceProviderFactory()); builder.Host.ConfigureContainer(AddAutofacConfig.BuildContainer); // 让控制器实例由容器创建 builder.Services.Replace(ServiceDescriptor.Transient()); // 添加定时任务 // builder.AddApplicationBackendServices(); // 设置过滤器 builder.AddFilterConfigInitialize(); // 初始化Redis builder.AddRedisContext(); // 初始化Minio builder.AddMinioContext(); // 初始化 Knife4Net 文档 builder.AddKnife4Net(); // 启动 webSocket builder.AddWebSocketInitial(); // 添加验证码 builder.AddCaptcha(); } /// /// 配置跨域 /// private void UseCors() { // SignalR 配置跨域 builder.Services.AddSignalRCore(); // 配置跨域 builder.Services.AddCors(options => { options.AddDefaultPolicy(policyBuilder => policyBuilder.WithOrigins("*") .WithHeaders("*") .WithMethods("*")); }); } }