IGeekFan.FreeKit.Web
IGeekFan.FreeKit.Web 是 FreeKitModules 的内部 BuildingBlock,不对外发布 NuGet 包。
它的职责是把 Infrastructure、Extras、Modularity 以及 ASP.NET Core Host 的常见注册动作装配起来,成为 Host 项目的启动基座。
使用方式
不是安装包,而是项目引用
<ItemGroup>
<ProjectReference Include="..\..\..\BuildingBlocks\IGeekFan.FreeKit.Web\IGeekFan.FreeKit.Web.csproj" />
</ItemGroup>
扩展方法清单
UseFreeKit
命名空间:FreeKit.DI.Extensions
builder.UseFreeKit(
moduleTypeMap: E.Modules,
extraAssemblies: new[] { typeof(Program).Assembly });
做了什么:
- 注册模块
- 配置 Autofac 与 Serilog
- 调用
RegisterFreeKitInfrastructure - 调用
RegisterDomainServices - 调用
AddFreeKitHost
AddFreeKitHost
builder.AddFreeKitHost(builder.Configuration, options);
做了什么:
- 配置 Kestrel
- 调用
AddFreeKitComplete - 按需启用任务调度
AddFreeKitComplete / AddFreeKitService
核心会按开关组合注册:
- SignalR
- FreeSql
- Redis + CacheStrategy
- JWT
- MVC
- Swagger
- IP2Region
- IP 限流
- HealthChecks
- Localization
- CAP + MediatR
AddCustomMVC
builder.Services.AddCustomMVC(builder.Configuration);
注册内容:
IHttpContextAccessor- Controllers
- 全局异常过滤器
- ModelState 统一返回
- NewtonsoftJson
CorsPolicy
AddSwagger
builder.Services.AddSwagger(builder.Configuration, projectNames);
注册内容:
- SwaggerGen
- XML 注释加载
- Bearer 鉴权描述
AddDefaultFreeSql
builder.Services.AddDefaultFreeSql(builder.Configuration);
注册内容:
IFreeSqlUnitOfWorkManager- 软删除与租户过滤器
- 审计值填充
依赖配置:
ConnectionStrings:*
AddDefaultJsonWebToken
builder.Services.AddDefaultJsonWebToken(builder.Configuration);
注册内容:
- HashService
- CryptographyService
- JwtService
- Authentication / Authorization
- Cookie / IdentityCookies
- 第三方登录可选注册
AddRedisClient
builder.Services.AddRedisClient(builder.Configuration);
依赖配置:
ConnectionStrings:Redis
RunScopeService
app.Services.RunScopeService<ToDoDbContext>();
作用:
- 启动时主动触发 DbContext 初始化
RegisterFreeKitInfrastructure
containerBuilder.RegisterFreeKitInfrastructure(assemblies);
注册内容:
AopCacheInterceptAopCacheAsyncInterceptUnitOfWorkModuleFreeKitModule
AddModulesFromMap / MapModules
builder.Services.AddModulesFromMap(E.Modules, builder.Configuration);
app.MapModules();
作用:
- 批量注册模块
- 按
RoutePrefix映射模块路由
Program.cs 推荐顺序
var builder = WebApplication.CreateBuilder(args);
builder.UseFreeKit(
moduleTypeMap: E.Modules,
extraAssemblies: new[] { typeof(Program).Assembly });
var app = builder.Build();
app.UseHttpsRedirection();
app.UseRouting();
app.UseAuthentication();
app.UseAuthorization();
app.UseCors("CorsPolicy");
app.MapModules();
app.MapControllers();
app.Run();
如果你关心底层能力本身注册了哪些对象,看 Infrastructure。