87 lines
2.7 KiB
C#
87 lines
2.7 KiB
C#
|
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";
|
|||
|
|
|||
|
// 配置
|
|||
|
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("*"));
|
|||
|
});
|
|||
|
}
|
|||
|
}
|