using Microsoft.Extensions.DependencyInjection; using Microsoft.Extensions.Hosting; using Microsoft.Extensions.Logging; using NLog.Extensions.Logging; using System; using System.Threading.Tasks; using JT808.Protocol; using JT808.DotNetty.Client; using JT808.DotNetty.CleintBenchmark.Configs; using Microsoft.Extensions.Configuration; using Microsoft.AspNetCore.Hosting; using Microsoft.AspNetCore.Builder; using JT808.DotNetty.CleintBenchmark.Services; namespace JT808.DotNetty.CleintBenchmark { class Program { static async Task Main(string[] args) { var serverHostBuilder = new HostBuilder() .ConfigureAppConfiguration((hostingContext, config) => { config.SetBasePath(AppDomain.CurrentDomain.BaseDirectory); config.AddJsonFile("appsettings.json", optional: false, reloadOnChange: true); }) .ConfigureWebHostDefaults(webBuilder => { webBuilder.Configure(app => { app.UseRouting(); app.UseCors("Domain"); app.UseStaticFiles(); app.UseDefaultFiles("/index.html"); app.UseEndpoints(endpoints => { endpoints.MapControllers(); }); }) .ConfigureServices((hostContext, services) => { services.AddControllers(); services.AddCors(options => options.AddPolicy("Domain", builder => builder.AllowAnyOrigin() .AllowAnyMethod() .AllowAnyHeader() .AllowAnyOrigin())); }); }) .ConfigureLogging((context, logging) => { if (Environment.OSVersion.Platform == PlatformID.Unix) { NLog.LogManager.LoadConfiguration("Configs/nlog.unix.config"); } else { NLog.LogManager.LoadConfiguration("Configs/nlog.win.config"); } logging.AddNLog(); logging.SetMinimumLevel(LogLevel.Trace); }) .ConfigureServices((hostContext, services) => { services.Configure(hostContext.Configuration.GetSection("ClientBenchmarkOptions")); services.AddSingleton(); services.AddSingleton(typeof(ILogger<>), typeof(Logger<>)); services.AddJT808Configure() .AddJT808Client(); services.AddHostedService(); }); await serverHostBuilder.RunConsoleAsync(); } } }