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!