public static bool AddressReply(Message message, Message faultMessage) { try { RequestReplyCorrelator.PrepareReply(faultMessage, message); } catch (MessageHeaderException exception) { if (DiagnosticUtility.ShouldTraceInformation) { DiagnosticUtility.ExceptionUtility.TraceHandledException(exception, TraceEventType.Information); } } bool flag = true; try { flag = RequestReplyCorrelator.AddressReply(faultMessage, message); } catch (MessageHeaderException exception2) { if (DiagnosticUtility.ShouldTraceInformation) { DiagnosticUtility.ExceptionUtility.TraceHandledException(exception2, TraceEventType.Information); } } return(flag); }
public bool AddressResponse(Message request, Message response) { if (this.GetAddressedProperty(response) != null) { throw Fx.AssertAndThrow("The binder can't address a response twice"); } try { RequestReplyCorrelator.PrepareReply(response, request); } catch (MessageHeaderException exception) { // ---- it - we don't need to correlate the reply if the MessageId header is bad if (DiagnosticUtility.ShouldTraceInformation) { DiagnosticUtility.TraceHandledException(exception, TraceEventType.Information); } } bool sendResponse = true; try { sendResponse = RequestReplyCorrelator.AddressReply(response, request); } catch (MessageHeaderException exception) { // ---- it - we don't need to address the reply if the addressing headers are bad if (DiagnosticUtility.ShouldTraceInformation) { DiagnosticUtility.TraceHandledException(exception, TraceEventType.Information); } } if (sendResponse) { this.AddAddressedProperty(response); } return(sendResponse); }
public override void ReadTransactionDataFromMessage(Message message, MessageDirection direction) { try { base.ReadTransactionDataFromMessage(message, direction); } catch (FaultException exception) { Message reply = Message.CreateMessage(message.Version, exception.CreateMessageFault(), exception.Action); RequestReplyCorrelator.AddressReply(reply, message); RequestReplyCorrelator.PrepareReply(reply, message.Headers.MessageId); try { this.Send(reply); } finally { reply.Close(); } throw; } }
public bool AddressResponse(Message request, Message response) { if (this.GetAddressedProperty(response) != null) { throw Fx.AssertAndThrow("The binder can't address a response twice"); } try { RequestReplyCorrelator.PrepareReply(response, request); } catch (MessageHeaderException exception) { if (DiagnosticUtility.ShouldTraceInformation) { DiagnosticUtility.ExceptionUtility.TraceHandledException(exception, TraceEventType.Information); } } bool flag = true; try { flag = RequestReplyCorrelator.AddressReply(response, request); } catch (MessageHeaderException exception2) { if (DiagnosticUtility.ShouldTraceInformation) { DiagnosticUtility.ExceptionUtility.TraceHandledException(exception2, TraceEventType.Information); } } if (flag) { this.AddAddressedProperty(response); } return(flag); }
internal static bool AddressReply(Message reply, Message request) { ReplyToInfo info = RequestReplyCorrelator.ExtractReplyToInfo(request); return(RequestReplyCorrelator.AddressReply(reply, info)); }