Files
tnb.server/apihost/Tnb.API.Entry/Startup.cs
alex f0e859a203 1
2023-08-04 10:38:53 +08:00

123 lines
4.0 KiB
C#
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
using IGeekFan.AspNetCore.Knife4jUI;
using JNPF.API.Entry.Handlers;
using JNPF.Common.Cache;
using JNPF.Common.Core;
using JNPF.Common.Core.Filter;
using JNPF.Common.Core.Handlers;
using JNPF.Common.Security;
using JNPF.DatabaseAccessor;
using JNPF.EventHandler;
using JNPF.JsonSerialization;
using JNPF.SpecificationDocument;
using JNPF.TaskScheduler.Interfaces.TaskScheduler;
using JNPF.UnifyResult;
using JNPF.VisualDev;
using Microsoft.AspNetCore.HttpOverrides;
using Microsoft.Extensions.Options;
using Newtonsoft.Json;
using Newtonsoft.Json.Serialization;
using Senparc.CO2NET;
using Senparc.CO2NET.RegisterServices;
using Senparc.Weixin;
using Senparc.Weixin.Entities;
using Senparc.Weixin.RegisterServices;
using SqlSugar;
using Tnb.WarehouseMgr;
namespace JNPF.API.Entry;
public class Startup : AppStartup
{
public void ConfigureServices(IServiceCollection services)
{
// 注册和配置Mvc和api服务
services.ConfigureMvcController();
// 注册和配置SqlSugar
services.ConfigureSqlSugar();
// 注册EventBus服务
services.ConfigureEventBus();
// 注册和配置日志服务
services.ConfigureLogging();
// 注册和配置存储服务
services.ConfigureOSSService();
// 任务调度
//services.AddSchedule(options =>
//{
// options.AddPersistence<DbJobPersistence>();
//});
// 任务调度
services.AddTaskScheduler();
services.AddMemoryCache(); // 使用本地缓存必须添加
services.AddConfigurableOptions<CacheOptions>();
// 微信
services.AddSenparcGlobalServices(App.Configuration) // Senparc.CO2NET 全局注册
.AddSenparcWeixinServices(App.Configuration); // Senparc.Weixin 注册如果使用Senparc.Weixin SDK则添加
services.AddOverideVisualDev();
//定时任务
//services.AddHostedService<TimedTaskBackgroundService>();
//services.AddSingleton<TimedTaskBackgroundService>();
//services.AddHostedService(sp => new ConditionalBackgroundService(sp.GetRequiredService<TimedTaskBackgroundService>()));
}
public void Configure(IApplicationBuilder app, IWebHostEnvironment env, IServiceProvider serviceProvider, IOptions<SenparcSetting> senparcSetting, IOptions<SenparcWeixinSetting> senparcWeixinSetting)
{
// 添加状态码拦截中间件
app.UseUnifyResultStatusCodes();
// app.UseHttpsRedirection(); // 强制https
app.UseStaticFiles();
#region
IRegisterService register = RegisterService.Start(senparcSetting.Value).UseSenparcGlobal();//启动 CO2NET 全局注册,必须!
register.UseSenparcWeixin(senparcWeixinSetting.Value, senparcSetting.Value);//微信全局注册,必须!
#endregion
app.UseWebSockets();
app.UseRouting();
app.UseCorsAccessor();
app.UseAuthentication();
app.UseAuthorization();
// 任务调度看板
app.UseScheduleUI();
app.UseKnife4UI(options =>
{
options.RoutePrefix = "newapi"; // 配置 Knife4UI 路由地址,现在是 /newapi
foreach (var groupInfo in SpecificationDocumentBuilder.GetOpenApiGroups())
{
options.SwaggerEndpoint("/" + groupInfo.RouteTemplate, groupInfo.Title);
}
});
app.UseInject(string.Empty);
//app.MapWebSocketManager("/api/message/websocket", serviceProvider.GetService<IMHandler>());
app.MapWebSocketManager("/websocket", serviceProvider.GetRequiredService<IMHandler>());
app.UseEndpoints(endpoints =>
{
endpoints.MapControllerRoute(name: "default", pattern: "{controller=Home}/{action=Index}/{id?}");
});
SnowflakeIdHelper.InitYitIdWorker();
bool isStartTimeJob = App.GetConfig<bool>("IsStartTimeJob");
if (isStartTimeJob)
serviceProvider.GetRequiredService<ITimeTaskService>().StartTimerJob();
}
}