using Autofac.Extensions.DependencyInjection; using Microsoft.AspNetCore.Hosting; using Microsoft.Extensions.DependencyInjection; using Microsoft.Extensions.Hosting; using Serilog; using SlnMesnac.Serilog; namespace SlnMesnac.WCS { internal class Program { private static SerilogHelper? serilogHelper; private static void Main(string[] args) { try { Thread.CurrentThread.Name = "Main"; Console.ForegroundColor = ConsoleColor.Yellow; AppDomain.CurrentDomain.UnhandledException += GlobalExceptionHandler; //全局异常捕获 var host = CreateHostBuilder(args).Build(); var hostTask = host.RunAsync(); serilogHelper = host.Services.GetRequiredService(); MainCentralControl mainCentralControl = new MainCentralControl(host); mainCentralControl.Start(); // serilogHelper.Info("WCS调度系统启动成功"); while (true) { Console.ReadLine(); } } catch (Exception ex) { Console.WriteLine(ex.Message); if (serilogHelper != null) { serilogHelper.Error("系统启动失败,异常:" + ex.Message); } } } private static void GlobalExceptionHandler(object sender, UnhandledExceptionEventArgs e) { //当前线程名称 Thread.CurrentThread.Name = "Error"; if (e.ExceptionObject is Exception exception) { Console.WriteLine("全局异常捕获:"); Console.WriteLine(exception.Message); Console.WriteLine(exception.StackTrace); if (serilogHelper != null) { serilogHelper.Error("全局异常捕获:" + exception.Message + "\n" + exception.StackTrace); } } else { Console.WriteLine("未知异常捕获:"); Console.WriteLine(e.ExceptionObject); if (serilogHelper != null) { serilogHelper.Error("未知异常捕获:" + e.ExceptionObject); } } } /// /// CreateHostBuilder /// /// /// public static IHostBuilder CreateHostBuilder(string[] args) => Host.CreateDefaultBuilder(args) .UseSerilog((context, config) => { }) .UseServiceProviderFactory(new AutofacServiceProviderFactory()) .ConfigureServices((hostContext, services) => { //services.AddHostedService(); }) .ConfigureWebHostDefaults(webBuilder => { webBuilder.UseStartup(); }); } }