using NetAdmin.Host.Extensions;
using NetAdmin.Host.Middlewares;
using NetAdmin.ScheduledService.Extensions;
#if !DEBUG
using Prometheus;
#endif
namespace NetAdmin.ScheduledService;
///
/// 启动类
///
public sealed class Startup : Host.Startup
{
///
/// 程序入口
///
public static void Main(string[] args)
{
ShowBanner();
_ = Serve.Run(RunOptions.Default.WithArgs(args));
}
///
/// 配置应用程序中间件
///
public void Configure(IApplicationBuilder app, IHostApplicationLifetime lifeTime)
{
_ = app //
.UseMiddleware() // 安全停机中间件
.EnableBuffering() // 启用请求体缓冲,允许多次读取请求体
.UseMiddleware() // 使用RequestAuditMiddleware中间件,执行请求审计
#if DEBUG
.UseOpenApiSkin() // 使用OpenApiSkin中间件(仅在调试模式下),提供Swagger UI皮肤
#else
.UseHttpMetrics() // 使用HttpMetrics中间件,启用HTTP性能监控
#endif
.UseInject(string.Empty) // 使用Inject中间件,Furion脚手架的依赖注入支持
.UseUnifyResultStatusCodes() // 使用UnifyResultStatusCodes中间件,用于统一处理结果状态码
.UseCorsAccessor() // 使用CorsAccessor中间件,启用跨域资源共享(CORS)支持
.UseRouting() // 使用Routing中间件,配置路由映射
.UseMiddleware() // 使用RemoveNullNodeMiddleware中间件,删除JSON中的空节点
.UseEndpoints(); // 配置端点以处理请求
_ = lifeTime.ApplicationStopping.Register(SafetyShopHostMiddleware.OnStopping);
}
///
/// 配置服务容器
///
public void ConfigureServices(IServiceCollection services)
{
_ = services //
.AddConsoleFormatter() // 添加控制台日志格式化器
.AddAllOptions() // 添加所有的配置选项
.AddSnowflake() // 添加雪花算法生成器
.AddEventBus() // 添加事件总线
.AddFreeSql() // 添加FreeSql数据库访问
.AddCorsAccessor() // 添加跨域资源共享(CORS)访问支持
.AddRedisCache() // 添加 Redis 缓存支持
.AddContextUser() // 添加上下文用户支持
.AddSchedules() // 添加计划任务
.AddRemoteRequest() // 添加远程请求支持
// IMvcBuilder
.AddControllers() // 添加控制器
.AddJsonSerializer() // 添加JSON序列化器
.AddDefaultApiResultHandler() // 添加默认的API结果处理程序
;
}
}