如何使用 Hangfire 获取失败的后台作业的异常详细信息
How to get the exception details of a failed background job with 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")
来测试它)。
我似乎找不到任何关于如何获取此信息的文档或示例,是否可能?
在另一个使用 GetMonitoringApi 的问题上看到 an answer 之后,我能够在这里使用它来获取异常消息,如下所示:
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"
消息。成功!
我正在使用 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")
来测试它)。
我似乎找不到任何关于如何获取此信息的文档或示例,是否可能?
在另一个使用 GetMonitoringApi 的问题上看到 an answer 之后,我能够在这里使用它来获取异常消息,如下所示:
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"
消息。成功!