using Ewide.Core; using Furion; using Furion.DependencyInjection; using Microsoft.AspNetCore.Authentication.JwtBearer; using Microsoft.AspNetCore.Builder; using Microsoft.AspNetCore.Hosting; using Microsoft.EntityFrameworkCore; using Microsoft.Extensions.DependencyInjection; using Microsoft.Extensions.Hosting; using OnceMi.AspNetCore.OSS; using Serilog; using System.Text.Json; using System.Text.Json.Serialization; using System.Threading.Tasks; namespace Ewide.Web.Core { public class Startup : AppStartup { public void ConfigureServices(IServiceCollection services) { services.AddJwt(enableGlobalAuthorize: true, jwtBearerConfigure: config => { //image 文件 等浏览器相关操作时 config.Events = new JwtBearerEvents { OnMessageReceived = context => { if (context.Request.Query.ContainsKey("access_token")) { context.Token = context.Request.Query["access_token"]; } return Task.CompletedTask; } }; }); services.AddCorsAccessor(); services.AddRemoteRequest(); services.AddConfigurableOptions(); services.AddConfigurableOptions(); services.AddControllersWithViews() .AddMvcFilter() .AddInjectWithUnifyResult() // 在管道中增加NewtonsoftJson,防止参数类型严格验证 .AddNewtonsoftJson(options => { options.SerializerSettings.DateFormatString = "yyyy-MM-dd HH:mm:ss"; }) .AddJsonOptions(options => { //options.JsonSerializerOptions.DefaultBufferSize = 10_0000;//返回较大数据数据序列化时会截断,原因:默认缓冲区大小(以字节为单位)为16384。 //options.JsonSerializerOptions.Converters.AddDateFormatString("yyyy-MM-dd HH:mm:ss"); options.JsonSerializerOptions.ReferenceHandler = ReferenceHandler.IgnoreCycles; // 忽略循环引用 仅.NET 6支持 }); services.AddViewEngine(); //services.AddEventBridge(); services.AddEventBus(builder => { builder.AddSubscriber(); }); // services.AddLocalization(); // 设置雪花id的workerId,确保每个实例workerId都应不同 //var workerId = ushort.Parse(App.Configuration["SnowId:WorkerId"] ?? "1"); //IDGenerator.SetIdGenerator(new IDGeneratorOptions { WorkerId = workerId }); services.AddOSSService("HuaweiCloud", "OSSProvider"); } public void Configure(IApplicationBuilder app, IWebHostEnvironment env) { if (env.IsDevelopment()) { app.UseDeveloperExceptionPage(); } else { app.UseExceptionHandler("/Home/Error"); app.UseHsts(); } // 添加状态码拦截中间件 app.UseUnifyResultStatusCodes(); //app.UseHttpsRedirection(); // 强制https app.UseStaticFiles(); // Serilog请求日志中间件---必须在 UseStaticFiles 和 UseRouting 之间 app.UseSerilogRequestLogging(); //app.UseAppLocalization(); app.UseRouting(); app.UseCorsAccessor(); app.UseAuthentication(); app.UseAuthorization(); app.UseInject(); app.UseEndpoints(endpoints => { endpoints.MapControllerRoute( name: "default", pattern: "gb/yjb/{controller=Home}/{action=Index}/{id?}"); }); } } }