using JiShe.ServicePro.Core; using Microsoft.Extensions.Configuration; namespace JiShe.IoT; public class Program { public static async Task Main(string[] args) { try { Log.Information("JiShe.IoT.HttpApi.Host."); var builder = WebApplication.CreateBuilder(args); builder.Host .AddAppSettingsSecretsJson() .UseAutofac() .UseSerilog((context, loggerConfiguration) => { SerilogToEsExtensions.SetSerilogConfiguration( loggerConfiguration, context.Configuration); }) .ConfigureAppConfiguration((context, builder) => { var env = context.HostingEnvironment.EnvironmentName; string[] filePathArray = new string[] { System.AppDomain.CurrentDomain.BaseDirectory, "configs"}; string jsonPath = Path.Combine(filePathArray); string defaultJson = Path.Combine(new string[] { jsonPath, "appsettings.json" }); var environmentJson = Path.Combine(new string[] { jsonPath, $"appsettings.{env}.json" } ); builder.AddJsonFile(defaultJson, false, true); builder.AddJsonFile(environmentJson, false, true); Console.WriteLine($"当前环境 :{env},配置文件路径:{environmentJson}"); }); await builder.AddApplicationAsync(); builder.WebHost.ConfigureKestrel((context, options) => { options.Limits.MaxRequestBodySize = 100 * 1024 * 1024; // 100MB null不受限制 options.Limits.KeepAliveTimeout = TimeSpan.FromMinutes(2); options.Limits.RequestHeadersTimeout = TimeSpan.FromMinutes(1); //获取或设置请求正文的最小数据速率(字节/秒)。将此属性设置为NULL表示不应强制执行最小数据速率。////获取或设置请求正文的最小数据速率(字节/秒)。将此属性设置为NULL表示不应强制执行最小数据速率。 options.Limits.MinRequestBodyDataRate = null;//new MinDataRate(bytesPerSecond: 2048, gracePeriod: TimeSpan.FromSeconds(10)); //options.Limits.MaxConcurrentConnections = 1000;//限制并发连接数,默认无限制 }); builder.WebHost.UseUrls($"http://+:10500"); var app = builder.Build(); await app.InitializeApplicationAsync(); await app.RunAsync(); return 0; } catch (Exception ex) { if (ex is HostAbortedException) { throw; } Log.Fatal(ex, "Host terminated unexpectedly!"); return 1; } finally { await Log.CloseAndFlushAsync(); } } }