using Serilog; var builder = WebApplication.CreateBuilder(args); Log.Logger = new LoggerConfiguration() .ReadFrom.Configuration(builder.Configuration) .Enrich.FromLogContext() .WriteTo.Console() .WriteTo.File("Logs/log-.txt", rollingInterval: RollingInterval.Day) .CreateLogger(); builder.Host.UseSerilog(); builder.Services.AddRequestTimeouts(); //非IIS托管时启用 if (!string.Equals(Environment.GetEnvironmentVariable("ASPNETCORE_HOSTINGSTARTUPASSEMBLIES"), "Microsoft.AspNetCore.Server.IISIntegration", StringComparison.OrdinalIgnoreCase)) { builder.WebHost.ConfigureKestrel(serverOptions => { serverOptions.ListenAnyIP(443, listenOptions => { var certPath = builder.Configuration["Kestrel:Certificates:Default:Path"]; var certPassword = builder.Configuration["Kestrel:Certificates:Default:Password"]; if (string.IsNullOrEmpty(certPath)) { throw new InvalidOperationException("SSL证书路径未配置或为空"); } listenOptions.UseHttps(certPath, certPassword); }); serverOptions.ListenAnyIP(80); }); } builder.Services.AddReverseProxy() .LoadFromConfig(builder.Configuration.GetSection("ReverseProxy")); var app = builder.Build(); app.UseSerilogRequestLogging(); app.UseRouting(); app.UseRequestTimeouts(); app.MapReverseProxy(); app.Run();