From 37454e625df68d40897112b2e8c2e3cf4d7163e3 Mon Sep 17 00:00:00 2001
From: heshaofeng <heshaofeng@hnkhzn.com>
Date: 星期三, 25 三月 2026 11:43:10 +0800
Subject: [PATCH] 1
---
项目代码/WMS无仓储版/WIDESEA_WMSServer/WIDESEA_WMSServer/Program.cs | 68 +++++++++++++++++++++++++++-------
1 files changed, 54 insertions(+), 14 deletions(-)
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WMS\346\227\240\344\273\223\345\202\250\347\211\210/WIDESEA_WMSServer/WIDESEA_WMSServer/Program.cs" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS\346\227\240\344\273\223\345\202\250\347\211\210/WIDESEA_WMSServer/WIDESEA_WMSServer/Program.cs"
index c284b28..02c9b08 100644
--- "a/\351\241\271\347\233\256\344\273\243\347\240\201/WMS\346\227\240\344\273\223\345\202\250\347\211\210/WIDESEA_WMSServer/WIDESEA_WMSServer/Program.cs"
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS\346\227\240\344\273\223\345\202\250\347\211\210/WIDESEA_WMSServer/WIDESEA_WMSServer/Program.cs"
@@ -1,4 +1,6 @@
+using System.Net.Security;
using System.Reflection;
+using System.Runtime.ConstrainedExecution;
using System.Text;
using Autofac;
using Autofac.Core;
@@ -11,7 +13,11 @@
using Newtonsoft.Json;
using Newtonsoft.Json.Converters;
using Newtonsoft.Json.Serialization;
+using Quartz;
+using Quartz.Impl;
+using Quartz.Spi;
using Serilog;
+using WIDESEA.QuartzJob;
using WIDESEA_Core;
using WIDESEA_Core.Authorization;
using WIDESEA_Core.BaseServices;
@@ -21,9 +27,10 @@
using WIDESEA_Core.Helper;
//using WIDESEA_Core.HostedService;
using WIDESEA_Core.Middlewares;
+using WIDESEA_DTO.Quartz;
+using WIDESEA_WMSServer;
using WIDESEA_WMSServer.Filter;
-using Quartz;
-using WIDESEA_WMSServer.Jobs;
+using WIDESEAWCS_Core.LogHelper;
var builder = WebApplication.CreateBuilder(args);
@@ -33,6 +40,36 @@
// .WriteTo.Console()
// .WriteTo.File("logs/log-.txt", rollingInterval: RollingInterval.Day)
// .CreateLogger();
+
+AppDomain.CurrentDomain.FirstChanceException += (sender, e) =>
+{
+ bool flag = e.Exception.TargetSite?.DeclaringType?.Namespace?.StartsWith("WIDESEA") == true;
+
+ if (e.Exception is not OperationCanceledException && flag)
+ {
+ string folderPath = Path.Combine(AppDomain.CurrentDomain.BaseDirectory, $"Log\\Exception");
+ Exception ex = e.Exception;
+ StringBuilder builder = new StringBuilder();
+ builder.Append("错误信息:");
+ builder.Append(ex.Message);
+ builder.Append(Environment.NewLine);
+ builder.Append("错误源:");
+ builder.Append(ex.Source);
+ builder.Append(Environment.NewLine);
+ builder.Append("错误堆栈:");
+ builder.Append(ex.StackTrace);
+ builder.Append(Environment.NewLine);
+ builder.Append("错误类型:");
+ builder.Append(ex.GetType().ToString());
+ builder.Append(Environment.NewLine);
+ builder.Append("错误方法:");
+ builder.Append(ex.TargetSite?.ToString());
+ builder.Append(Environment.NewLine);
+ builder.Append(Environment.NewLine);
+
+ LoggerHelper.WriteError(e.Exception, folderPath);
+ }
+};
Log.Logger = new LoggerConfiguration()
.MinimumLevel.Information() // 设置全局最低日志级别为 Information
@@ -47,7 +84,7 @@
.WriteTo.File( // 配置输出到文件
path: "logs/log-.txt", // 日志文件路径,会自动创建 logs 文件夹
rollingInterval: RollingInterval.Day, // 按天滚动日志文件
- retainedFileCountLimit: 7, // 最多保留7天的日志
+ retainedFileCountLimit: 365, // 最多保留7天的日志
outputTemplate: "{Timestamp:yyyy-MM-dd HH:mm:ss.fff zzz} [{Level:u3}] {Message:lj}{NewLine}{Exception}"
)
.CreateLogger();
@@ -148,13 +185,17 @@
client.Timeout = TimeSpan.FromSeconds(30);
});
-
+builder.Services.AddSingleton<IJobFactory, JobFactory>();
+builder.Services.AddTransient<AgvTaskJob>();//Job使用瞬时依赖注入
+builder.Services.AddTransient<InventoryLockJob>();//Job使用瞬时依赖注入
+builder.Services.AddTransient<ErpJob>();//Job使用瞬时依赖注入
+builder.Services.AddSingleton<ISchedulerCenter, SchedulerCenterServer>();
+
builder.Services.AddQuartz(q =>
{
var jobKey = new JobKey("ErpJob");
q.AddJob<ErpJob>(opts => opts.WithIdentity(jobKey));
-
// 添加触发器 - 每天10:00, 14:00, 20:00执行
q.AddTrigger(opts => opts
@@ -162,21 +203,20 @@
.WithIdentity("ErpJob-trigger")
.WithCronSchedule("0 0 10,14,20 * * ?"));
- var inventoryLockJobKey = new JobKey("InventoryLockJob");
- q.AddJob<InventoryLockJob>(opts => opts.WithIdentity(inventoryLockJobKey));
+ //var inventoryLockJobKey = new JobKey("InventoryLockJob");
+ //q.AddJob<InventoryLockJob>(opts => opts.WithIdentity(inventoryLockJobKey));
- q.AddTrigger(opts => opts
- .ForJob(inventoryLockJobKey)
- .WithIdentity("InventoryLockJob-trigger")
- .WithCronSchedule("0 0/10 * * * ?")); // 每10分钟执行一次
-
+ //q.AddTrigger(opts => opts
+ // .ForJob(inventoryLockJobKey)
+ // .WithIdentity("InventoryLockJob-trigger")
+ // .WithCronSchedule("0 0/10 * * * ?")); // 每10分钟执行一次
});
-
builder.Services.AddQuartzHostedService(q => q.WaitForJobsToComplete = true);
var app = builder.Build();
-
+app.UseQuartzJobMildd();
+
app.UseMiniProfiler();//性能分析器
app.ConfigureApplication();//配置文件
app.UseApplicationSetup();//启动配置
--
Gitblit v1.9.3