Comment obtenir les détails de l'exception d'une tâche en arrière-plan ayant échoué avec Hangfire
Nov 25 2020
J'utilise Hangfire pour déclencher des tâches en arrière-plan, puis je vérifie leur progression à la recherche de tâches ayant échoué en utilisant:
IStorageConnection connection = JobStorage.Current.GetConnection();
JobData jobData = connection.GetJobData(jobId);
if (jobData.State == FailedState.StateName)
// Some how get exception details
Je voudrais obtenir l'exception levée qui a provoqué l'échec du travail. (Je lance new Exception("test error")
actuellement mon travail pour le tester).
Je n'arrive pas à trouver de documentation ou d'exemples sur la façon dont je peux obtenir ces informations, est-ce possible?
Réponses
1 CodieCollinge Nov 25 2020 at 23:44
Après avoir vu une réponse à une autre question qui utilisait GetMonitoringApi, j'ai pu l'utiliser ici pour obtenir le message d'exception comme suit:
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;
}
Cela me donne le "test error"
message qui a été lancé de mon travail. Succès!