2024-08-08 22:23:36 +08:00
|
|
|
|
using Bunny.Common;
|
|
|
|
|
using Bunny.Service.WebSocket;
|
|
|
|
|
using Microsoft.AspNetCore.Mvc.Controllers;
|
|
|
|
|
using Microsoft.Extensions.DependencyInjection.Extensions;
|
|
|
|
|
|
|
|
|
|
namespace Bunny.WebApi.Config;
|
|
|
|
|
|
|
|
|
|
public class BaseConfig
|
|
|
|
|
{
|
|
|
|
|
/// <summary>
|
|
|
|
|
/// 只要Controller和Service放在 WebApi 项目下即可完成自动注入
|
|
|
|
|
/// 遵守这个规则不用再启动类上注入IOC
|
|
|
|
|
/// 遵守这个规则在Controller可以使用属性方式注入Service
|
|
|
|
|
/// 只要写接口和实现、Controller中正常写即可
|
|
|
|
|
/// </summary>
|
|
|
|
|
/// <param name="builder"></param>
|
|
|
|
|
public static void Initialize(WebApplicationBuilder builder)
|
|
|
|
|
{
|
|
|
|
|
Console.Title = "Bunny Template";
|
|
|
|
|
|
2024-08-08 22:51:21 +08:00
|
|
|
|
// 注入服务依赖
|
|
|
|
|
builder.AddApplicationServices();
|
2024-08-08 22:56:53 +08:00
|
|
|
|
builder.AddApplicationBackendServices();
|
2024-08-08 22:51:21 +08:00
|
|
|
|
|
2024-08-08 22:23:36 +08:00
|
|
|
|
// 配置
|
|
|
|
|
UseConfiguration(builder);
|
|
|
|
|
|
|
|
|
|
// 使用扩展,第三方如Redis、Minio、SQLSugar
|
|
|
|
|
UseExtend(builder);
|
|
|
|
|
|
|
|
|
|
// 配置跨域
|
|
|
|
|
UseCors(builder);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
private static void UseConfiguration(WebApplicationBuilder builder)
|
|
|
|
|
{
|
|
|
|
|
// 配置日志相关
|
|
|
|
|
builder.Logging.AddLog4Net("Config/log4net.config");
|
|
|
|
|
|
|
|
|
|
//配置文件
|
|
|
|
|
builder.Services.AddSingleton(new AppSettings(builder.Configuration));
|
|
|
|
|
|
|
|
|
|
// 添加 SignalR
|
|
|
|
|
builder.Services.AddSignalR();
|
|
|
|
|
|
|
|
|
|
// 让控制器实例由容器创建
|
|
|
|
|
builder.Services.Replace(ServiceDescriptor.Transient<IControllerActivator, ServiceBasedControllerActivator>());
|
|
|
|
|
|
|
|
|
|
// 如果将Service放在 WebApi同级目录下,可以完成Controller自动注入,不需要写构造函数
|
|
|
|
|
builder.Services.Replace(ServiceDescriptor.Transient<IControllerActivator, ServiceBasedControllerActivator>());
|
|
|
|
|
builder.Services.AddControllers().AddJsonOptions(options =>
|
|
|
|
|
options.JsonSerializerOptions.Converters.Add(new JsonDateTimeConverter()));
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/// <summary>
|
|
|
|
|
/// 扩展服务
|
|
|
|
|
/// </summary>
|
|
|
|
|
/// <param name="builder">WebApplicationBuilder</param>
|
|
|
|
|
private static void UseExtend(WebApplicationBuilder builder)
|
|
|
|
|
{
|
|
|
|
|
// 设置过滤器
|
|
|
|
|
FilterConfig.Initialize(builder);
|
|
|
|
|
|
|
|
|
|
// 初始化Redis
|
|
|
|
|
// RedisTemplate.Initial();
|
|
|
|
|
|
|
|
|
|
// 初始化 Knife4Net文档
|
|
|
|
|
Knife4Net.Initialize(builder);
|
|
|
|
|
|
|
|
|
|
// 启动webSocket
|
|
|
|
|
WebSocketInitial.Start();
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/// <summary>
|
|
|
|
|
/// 配置跨域
|
|
|
|
|
/// </summary>
|
|
|
|
|
/// <param name="builder"></param>
|
|
|
|
|
private static void UseCors(IHostApplicationBuilder builder)
|
|
|
|
|
{
|
|
|
|
|
// SignalR 配置跨域
|
|
|
|
|
builder.Services.AddSignalRCore();
|
|
|
|
|
|
|
|
|
|
// 配置跨域
|
|
|
|
|
builder.Services.AddCors(options =>
|
|
|
|
|
{
|
|
|
|
|
options.AddDefaultPolicy(policyBuilder => policyBuilder.WithOrigins("*")
|
|
|
|
|
.WithHeaders("*")
|
|
|
|
|
.WithMethods("*"));
|
|
|
|
|
});
|
|
|
|
|
}
|
|
|
|
|
}
|