/
vshmidt
/
masstransit
Обзор
Документация
Войти
/
vshmidt
/
masstransit
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
0
Аналитика
Безопасность
develop
src/MassTransit/Events/FaultEvent.cs
63 строки
2 KB
Chris Patterson
AggregateException should be recognized by the ExceptionFilter and properly inspected to determine if an exception should be handled or ignored.
11 июн 2025, 20:33
11 июн 2025, 20:33
5dcd785
Код
Авторство
О чём код?
namespace MassTransit.Events { using System; using System.Collections.Generic; using System.Linq; [Serializable] public class FaultEvent<T> : Fault<T> { public FaultEvent() { } public FaultEvent(T message, Guid? faultedMessageId, HostInfo host, Exception exception, string[] faultMessageTypes) : this(message, faultedMessageId, host, GetExceptions(exception), faultMessageTypes) { } public FaultEvent(T message, Guid? faultedMessageId, HostInfo host, IEnumerable<ExceptionInfo> exceptions, string[] faultMessageTypes) { Timestamp = DateTime.UtcNow; FaultId = NewId.NextGuid(); Message = message; Host = host; FaultMessageTypes = faultMessageTypes; FaultedMessageId = faultedMessageId; Exceptions = exceptions.ToArray(); } public Guid FaultId { get; set; } public Guid? FaultedMessageId { get; set; } public DateTime Timestamp { get; set; } public ExceptionInfo[] Exceptions { get; set; } public HostInfo Host { get; set; } public string[] FaultMessageTypes { get; set; } public T Message { get; set; } static ExceptionInfo[] GetExceptions(Exception exception) { var aggregateException = exception as AggregateException; return aggregateException?.InnerExceptions.Where(x => x != null).Select(ExceptionInfo (x) => new FaultExceptionInfo(x)).ToArray() ?? [new FaultExceptionInfo(exception)]; } } [Serializable] public class FaultEvent : Fault { public Guid FaultId { get; set; } public Guid? FaultedMessageId { get; set; } public DateTime Timestamp { get; set; } public ExceptionInfo[] Exceptions { get; set; } public HostInfo Host { get; set; } public string[] FaultMessageTypes { get; set; } } }