首页 > 解决方案 > 如何使用 Hangfire 获取失败的后台作业的异常详细信息

问题描述

我正在使用 Hangfire 启动一些后台作业,然后我正在使用以下方法检查他们寻找失败作业的进度:

IStorageConnection connection = JobStorage.Current.GetConnection();
JobData jobData = connection.GetJobData(jobId);

if (jobData.State == FailedState.StateName)
   // Some how get exception details

我想抛出导致工作失败的异常。(我new Exception("test error")目前正在投入我的工作来测试它)。

我似乎找不到任何有关如何获取此信息的文档或示例,这可能吗?

标签: c#hangfire

解决方案


在看到另一个使用 GetMonitoringApi 的问题的答案后,我可以在这里使用它来获取异常消息,如下所示:

if (jobData.State == FailedState.StateName)
{
  var failedJobsCount = JobStorage.Current.GetMonitoringApi()
      .FailedCount();

  var failedJob = JobStorage.Current.GetMonitoringApi()
      .FailedJobs(0, (int)failedJobsCount)
      .Where(j => j.Key == jobId)
      .SingleOrDefault();
  
  var exceptionMsg = failedJob.Value.ExceptionMessage;
}

这给了我"test error"从我的工作中抛出的信息。成功!


推荐阅读