static async Task GenerateFault(ExceptionReceiveContext context) { Guid?messageId; Guid?requestId; string[] messageTypes = null; if (context.TryGetPayload(out ConsumeContext consumeContext)) { messageId = consumeContext.MessageId; requestId = consumeContext.RequestId; messageTypes = consumeContext.SupportedMessageTypes.ToArray(); } else { messageId = context.TransportHeaders.Get("MessageId", default(Guid?)); requestId = context.TransportHeaders.Get("RequestId", default(Guid?)); } ReceiveFault fault = new ReceiveFaultEvent(HostMetadataCache.Host, context.Exception, context.ContentType?.MediaType, messageId, messageTypes); var faultEndpoint = await GetFaultEndpoint(context, consumeContext, requestId).ConfigureAwait(false); await faultEndpoint.Send(fault).ConfigureAwait(false); }
static async Task GenerateFault(ExceptionReceiveContext context) { Guid?messageId; Guid?requestId; string[] messageTypes = null; if (context.TryGetPayload(out ConsumeContext consumeContext)) { messageId = consumeContext.MessageId; requestId = consumeContext.RequestId; messageTypes = consumeContext.SupportedMessageTypes.ToArray(); } else { messageId = context.GetMessageId(); requestId = context.GetRequestId(); } if (context.PublishFaults || consumeContext?.FaultAddress != null || consumeContext?.ResponseAddress != null) { ReceiveFault fault = new ReceiveFaultEvent(HostMetadataCache.Host, context.Exception, context.ContentType?.MediaType, messageId, messageTypes); var faultEndpoint = await context.GetReceiveFaultEndpoint(consumeContext, requestId).ConfigureAwait(false); await faultEndpoint.Send(fault).ConfigureAwait(false); } }
static void GenerateFault(ExceptionReceiveContext context) { IPublishEndpoint publishEndpoint; Guid? faultedMessageId; if (context.TryGetPayload(out ConsumeContext consumeContext)) { publishEndpoint = consumeContext; faultedMessageId = consumeContext.MessageId; } else { faultedMessageId = context.TransportHeaders.Get("MessageId", default(Guid?)); publishEndpoint = context.PublishEndpointProvider.CreatePublishEndpoint(context.InputAddress); } ReceiveFault fault = new ReceiveFaultEvent(HostMetadataCache.Host, context.Exception, context.ContentType.MediaType, faultedMessageId); var contextPipe = new ConsumeSendContextPipe <ReceiveFault>(consumeContext); var publishTask = publishEndpoint.Publish(fault, contextPipe, context.CancellationToken); context.AddPendingTask(publishTask); context.AddPendingTask(context.NotifyFaulted(context.Exception)); }
void GenerateFault(ExceptionReceiveContext context) { Guid?faultedMessageId = context.TransportHeaders.Get("MessageId", default(Guid?)); ReceiveFault fault = new ReceiveFaultEvent(HostMetadataCache.Host, context.Exception, context.ContentType.MediaType, faultedMessageId); var publishEndpoint = _publishEndpoint.CreatePublishEndpoint(context.InputAddress); var publishTask = publishEndpoint.Publish(fault, context.CancellationToken); context.AddPendingTask(publishTask); context.AddPendingTask(context.NotifyFaulted(context.Exception)); }
public void Should_serialize_fault_from_serializable_exception() { Exception ex = null; try { throw new Exception("Boom"); } catch (Exception e) { ex = new AggregateException(e); } var fault = new ReceiveFaultEvent(HostMetadataCache.Host, ex, "Foo", Guid.Empty); TestCanSerialize(fault); }
void TestCanSerialize(ReceiveFaultEvent fault) { var bytes = Serialize(fault); bytes.Length.ShouldBeGreaterThan(0); }