using Microsoft.AspNetCore.HostFiltering; using Microsoft.AspNetCore.HttpOverrides; using Microsoft.Extensions.Options; using Scalar.AspNetCore; using Serilog; using StopShopping.FileApi; using StopShopping.FileApi.Extensions; using StopShopping.FileApi.Services; // 将启动日志写入控制台,用于捕获启动时异常,启动后WriteTo被后续配置替代 Log.Logger = new LoggerConfiguration() .WriteTo.Console() .CreateBootstrapLogger(); try { var builder = WebApplication.CreateBuilder(args); builder.Services.AddSerilog((services, seriLogger) => { seriLogger.ReadFrom.Configuration(builder.Configuration) .ReadFrom.Services(services); }); builder.Services.AddOpenApi(options => { options.AddSchemaTransformer(); }); builder.Services.AddProblemDetails(); builder.Services.AddServices(builder.Configuration.GetSection("AppOptions")); /********************************************************************/ var app = builder.Build(); if (app.Environment.IsDevelopment()) { app.MapOpenApi(); app.MapScalarApiReference(); } if (!app.Environment.IsDevelopment()) { app.UseHostFiltering(); var forwardedHeadersOptions = new ForwardedHeadersOptions { ForwardedHeaders = ForwardedHeaders.All, }; var hostFilteringOptions = app.Services.GetRequiredService>(); if (null != hostFilteringOptions) forwardedHeadersOptions.AllowedHosts = hostFilteringOptions.Value.AllowedHosts; app.UseForwardedHeaders(forwardedHeadersOptions); } app.UseStaticFiles(); Routes.MapRoutes(app); app.UseInternalOnlyAccess(); app.Run(); } catch (Exception ex) { Log.Fatal(ex, "启动异常!"); } finally { Log.CloseAndFlush(); }