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;
     }
 }
Exemplo n.º 4
0
        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));
        }