Cómo obtener los detalles de la excepción de un trabajo en segundo plano fallido con Hangfire
Nov 25 2020
Estoy usando Hangfire para lanzar algunos trabajos en segundo plano, luego estoy verificando su progreso en busca de trabajos fallidos usando:
IStorageConnection connection = JobStorage.Current.GetConnection();
JobData jobData = connection.GetJobData(jobId);
if (jobData.State == FailedState.StateName)
// Some how get exception details
Me gustaría que se lanzara la excepción que provocó que el trabajo fallara. (Estoy lanzando new Exception("test error")mi trabajo actualmente para probarlo).
Parece que no puedo encontrar ningún documento o ejemplo sobre cómo puedo obtener esta información, ¿es posible?
Respuestas
1 CodieCollinge Nov 25 2020 at 23:44
Después de ver una respuesta a otra pregunta que usaba GetMonitoringApi, pude usarla aquí para obtener el mensaje de excepción así:
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;
}
Esto me da el "test error"mensaje que se arrojó de mi trabajo. ¡Éxito!