using System; using System.Text; using Furion; using Furion.Schedule; using Furion.TimeCrontab; using Microsoft.AspNetCore.Builder; using Microsoft.AspNetCore.Hosting; using Microsoft.Extensions.DependencyInjection; using Microsoft.Extensions.Hosting; using Microsoft.Extensions.Logging; using Yi.Framework.Infrastructure.Data.Json; using Yi.Furion.Application.Rbac.Job; using Yi.Furion.Application.Rbac.SignalRHub; using Yi.Furion.Web.Core.Handlers; namespace Yi.Furion.Web.Core; public class Startup : AppStartup { public void ConfigureServices(IServiceCollection services) { services.AddConsoleFormatter(); services.AddJwt(); services.AddCorsAccessor(); services.AddControllers().AddInjectWithUnifyResult().AddJsonOptions(x => { x.JsonSerializerOptions.Converters.Add(new DateTimeJsonConverter("yyyy-MM-dd HH:mm:ss")); x.JsonSerializerOptions.Converters.Add(new LongToStringConverter()); }); services.AddEventBus(); services.AddHttpContextAccessor(); services.AddSignalR(); services.AddSchedule(options => { // 注册作业,并配置作业触发器 //options.AddJob(Triggers.Period(10000)); //options.AddJob(Triggers.Period(10000)); options.AddJob(Triggers.Cron("0 0 0,12 ? * ?", CronStringFormat.WithSeconds)); // 表示每天凌晨与12点 }); services.AddFileLogging("log/application-{0:yyyy}-{0:MM}-{0:dd}.log", options => { options.Append = true; options.MinimumLevel = LogLevel.Information; options.FileSizeLimitBytes = 1024 * 1024 * 10; options.MaxRollingFiles = 100; options.FileNameRule = fileName => { return string.Format(fileName, DateTime.UtcNow); }; }); services.AddMonitorLogging(); } public void Configure(IApplicationBuilder app, IWebHostEnvironment env) { if (env.IsDevelopment()) { app.UseDeveloperExceptionPage(); } app.UseHttpsRedirection(); app.UseRouting(); app.UseCorsAccessor(); app.UseAuthentication(); app.UseAuthorization(); app.UseInject(string.Empty); } private string ConverStr(string utf8mb3String) { // 将 utf8mb3String 转换为 UTF-8mb3 编码的字节数组 byte[] utf8mb3Bytes = Encoding.UTF8.GetBytes(utf8mb3String); // 将 UTF-8mb3 编码的字节数组转换为 UTF-8mb4 编码的字节数组 byte[] utf8mb4Bytes = Encoding.Convert(Encoding.UTF8, new UTF8Encoding(true), utf8mb3Bytes); // 将 UTF-8mb4 编码的字节数组转换为字符串 string utf8mb4String = Encoding.UTF8.GetString(utf8mb4Bytes); return utf8mb4String; } } [AppStartup(-1)] public class EndStartup : AppStartup { public void Configure(IApplicationBuilder app, IWebHostEnvironment env) { app.UseEndpoints(endpoints => { endpoints.MapHub("/api/hub/main"); endpoints.MapControllers(); }); } }