CSharp-Single-EFCore/Bunny.WebApi/Configuration/BaseConfig.cs

68 lines
2.3 KiB
C#
Raw Normal View History

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