Esempio n. 1
0
        public Message SerializeReply(MessageVersion messageVersion, object[] parameters, object result)
        {
            if (_direction == FormatterDirection.Both || _direction == FormatterDirection.Outgoing)
            {
                Message message;
                if (_responseType != null && result != null)
                {
                    string[] accept = null;
                    if (OperationContext.Current.OutgoingMessageProperties.ContainsKey(WebDispatcherFormatterAccept))
                    {
                        accept = (string[])OperationContext.Current.OutgoingMessageProperties[WebDispatcherFormatterAccept];
                    }

                    message = Serialize(
                        _formatterFactory,
                        result,
                        _responseType,
                        accept);
                }
                else
                {
                    WebOperationContext.Current.OutgoingResponse.SuppressEntityBody = true;
                    message = Message.CreateMessage(MessageVersion.None, null, new object());
                }
                message.UpdateHttpProperty();
                return(message);
            }
            return(_originalFormatter.SerializeReply(messageVersion, parameters, result));
        }
Esempio n. 2
0
        public System.ServiceModel.Channels.Message SerializeReply(System.ServiceModel.Channels.MessageVersion messageVersion, object[] parameters, object result)
        {
            Message returnMessage = null;


            if (_compression && result != null)
            {
                XmlSerializer serializer = new XmlSerializer(result.GetType());

                using (MemoryStream ms = new MemoryStream())
                {
                    serializer.Serialize(ms, result);

                    // Compress MemoryStream data and create message based on messageversion and action
                    returnMessage = Message.CreateMessage(messageVersion, _replyAction, Zip(ms.ToArray()));
                }
            }
            else
            {
                // Used defualt serialization
                returnMessage = _baseFormater.SerializeReply(messageVersion, parameters, result);
            }


            return(returnMessage);
        }
        public Message SerializeReply(MessageVersion messageVersion, object[] parameters, object result)
        {
            Message message = _innerDispatchFormatter.SerializeReply(messageVersion, parameters, result);

            if (_controller != null)
            {
                _controller.Encode(_context, message);
            }
            return(message);
        }
Esempio n. 4
0
        Message IDispatchMessageFormatter.SerializeReply(MessageVersion messageVersion, object[] parameters, object result)
        {
            var seralizedParameters = new object[parameters.Length];

            for (int i = 0; i < parameters.Length; i++)
            {
                seralizedParameters[i] = Serializer.SerializeBytes(parameters[i]);
            }
            var serialzedResult = Serializer.SerializeBytes(result);

            return(_innerDispatchFormatter.SerializeReply(messageVersion, seralizedParameters, serialzedResult));
        }
Esempio n. 5
0
        public Message SerializeReply(MessageVersion messageVersion, object[] parameters, object result)
        {
            Message message = default;
            var     thread  = new Thread(() =>
            {
                Factorial(1024).Wait();
                message = dispatchMessageFormatter.SerializeReply(messageVersion, parameters, result);
            }, 1024 * 1024);

            thread.Start();
            thread.Join();
            return(message);
        }
 public Message SerializeReply(MessageVersion messageVersion, object[] parameters, object result)
 {
     //see if we have a cors state with a predefined message.
     //in that case where we can ignore the whole serialization process
     if (OperationContext.Current.OutgoingMessageProperties.ContainsKey(CorsDispatchMessageInspector.CrossOriginResourceSharingPropertyName))
     {
         var state = OperationContext.Current.OutgoingMessageProperties[CorsDispatchMessageInspector.CrossOriginResourceSharingPropertyName] as CorsState;
         if (state != null && state.Message != null)
         {
             return(state.Message);
         }
     }
     return(_originalFormatter.SerializeReply(messageVersion, parameters, result));
 }
        public Message SerializeReply(MessageVersion messageVersion, object[] parameters, object result)
        {
            var replyMessage = _basicDispatchMessageFormatter.SerializeReply(messageVersion, parameters, result);

            if (IsJsonContentTypeResponse(replyMessage) && _dateFormat != DateFormat.WCF)
            {
                string json    = JsonConvert.SerializeObject(result);
                byte[] bytes   = Encoding.UTF8.GetBytes(json);
                var    message = Message.CreateMessage(messageVersion, _operation.Messages[1].Action, new RawDataWriter(bytes));
                message.Properties.Add(WebBodyFormatMessageProperty.Name, new WebBodyFormatMessageProperty(WebContentFormat.Raw));
                var responseMessageProperty = new HttpResponseMessageProperty();
                responseMessageProperty.Headers.Add("Content-Type", "application/json");
                message.Properties.Add(HttpResponseMessageProperty.Name, responseMessageProperty);

                return(message);
            }

            return(replyMessage);
        }
Esempio n. 8
0
        public void OnSerializeReplyExecutesResponsePipeline()
        {
            SHttpOperationDescription operation = new SHttpOperationDescription()
            {
                CallBase = true, ReturnValue = HttpParameter.ResponseMessage
            };
            IEnumerable <HttpOperationHandler> emptyHandlers = Enumerable.Empty <HttpOperationHandler>();
            OperationHandlerPipeline           pipeline      = new OperationHandlerPipeline(emptyHandlers, emptyHandlers, operation);
            MOperationHandlerPipeline          molePipeline  = new MOperationHandlerPipeline(pipeline);

            molePipeline.BehaveAsDefaultValue();

            MOperationHandlerPipelineContext moleContext = new MOperationHandlerPipelineContext();

            HttpResponseMessage             response   = new HttpResponseMessage();
            OperationHandlerPipelineContext setContext = null;

            object[] setValues = null;
            object   setResult = null;

            molePipeline.ExecuteResponsePipelineOperationHandlerPipelineContextObjectArrayObject = (context, values, result) =>
            {
                setContext = context;
                setValues  = values;
                setResult  = result;
                return(response);
            };

            OperationHandlerFormatter formatter = new OperationHandlerFormatter(molePipeline);
            IDispatchMessageFormatter dispatchMessageFormatter = (IDispatchMessageFormatter)formatter;

            object[] parameters = new object[] { 1, "text" };
            Message  message    = dispatchMessageFormatter.SerializeReply(MessageVersion.None, parameters, "theResult");

            Assert.IsNotNull(setValues, "Input values were not passed to the pipeline.");

            CollectionAssert.AreEqual(new List <object>(parameters), new List <object>(setValues), "Parameters were not passed correctly.");
            Assert.AreEqual("theResult", setResult, "Result was not passed correctly.");

            Assert.IsNotNull(setContext, "Context was not set.");
        }
Esempio n. 9
0
        public System.ServiceModel.Channels.Message SerializeReply(System.ServiceModel.Channels.MessageVersion messageVersion, object[] parameters, object result)
        {
            Message ora_msg = dispatchFormatter.SerializeReply(messageVersion, parameters, result);

            return(Base64BodyMessage(ora_msg));
        }
Esempio n. 10
0
 public Message SerializeReply(MessageVersion messageVersion, object [] parameters, object result)
 {
     return(src.SerializeReply(messageVersion, parameters, result));
 }
        public Message SerializeReply(MessageVersion messageVersion, Object[] parameters, Object result)
        {
            var message = formatter.SerializeReply(messageVersion, parameters, result);

            return(new XmlDeclarationMessage(message));
        }
        public System.ServiceModel.Channels.Message SerializeReply(System.ServiceModel.Channels.MessageVersion messageVersion, object[] parameters, object result)
        {
            var message = innerDispatchFormatter.SerializeReply(messageVersion, parameters, result);

            return(RemoveResultElement(message));
        }
Esempio n. 13
0
 Message IDispatchMessageFormatter.SerializeReply(MessageVersion messageVersion, object[] parameters, object result)
 {
     return(innerDispatchFormatter.SerializeReply(messageVersion, parameters, result));
 }