diff --git a/IRaCIS.Core.API/HostService/HangfireHostService.cs b/IRaCIS.Core.API/HostService/HangfireHostService.cs index f1ede2c8b..478d883b9 100644 --- a/IRaCIS.Core.API/HostService/HangfireHostService.cs +++ b/IRaCIS.Core.API/HostService/HangfireHostService.cs @@ -41,6 +41,21 @@ public class HangfireHostService(IRecurringMessageScheduler _recurringMessageSch HangfireJobHelper.RemoveCronJob(jobId); } + // 清除所有可能存在的定时任务,防止类型加载错误 + var allJobIdList = JobStorage.Current.GetConnection().GetRecurringJobs().Select(t => t.Id).ToList(); + foreach (var jobId in allJobIdList) + { + try + { + HangfireJobHelper.RemoveCronJob(jobId); + _logger.LogInformation($"已清除定时任务: {jobId}"); + } + catch (Exception ex) + { + _logger.LogWarning($"清除定时任务 {jobId} 时出错: {ex.Message}"); + } + } + var taskInfoList = await _trialEmailNoticeConfigRepository.Where(t => t.Trial.TrialStatusStr == StaticData.TrialState.TrialOngoing && t.EmailCron != string.Empty && t.IsAutoSend) .Select(t => new { t.Id, t.Code, TrialCode = t.Trial.TrialCode, t.EmailCron, t.BusinessScenarioEnum, t.TrialId }) diff --git a/IRaCIS.Core.API/_ServiceExtensions/hangfireSetup.cs b/IRaCIS.Core.API/_ServiceExtensions/hangfireSetup.cs index 1e2eff9eb..bd5456482 100644 --- a/IRaCIS.Core.API/_ServiceExtensions/hangfireSetup.cs +++ b/IRaCIS.Core.API/_ServiceExtensions/hangfireSetup.cs @@ -27,7 +27,8 @@ namespace IRaCIS.Core.API hangFireConfig.UseSqlServerStorage(hangFireConnStr, new SqlServerStorageOptions() { SchemaName = "dbo", - }).UseRecommendedSerializerSettings().UseSimpleAssemblyNameTypeSerializer(); + }).UseRecommendedSerializerSettings(); + // 移除 UseSimpleAssemblyNameTypeSerializer() 以避免类型加载问题 }