public Message SerializeReply(MessageVersion messageVersion, object[] parameters, object result) { Message request = OperationContext.Current.RequestContext.RequestMessage; object propObj; if (result is Stream) { byte[] data; if (result is MemoryStream) { data = ((MemoryStream)result).ToArray(); } else { using (MemoryStream ms = new MemoryStream()) { ((Stream)result).CopyTo(ms); data = ms.ToArray(); } } System.ServiceModel.Channels.Message replyMessage = System.ServiceModel.Channels.Message.CreateMessage(messageVersion, operation.Messages[1].Action, new RawBodyWriter(data)); replyMessage.Properties.Add(WebBodyFormatMessageProperty.Name, new WebBodyFormatMessageProperty(WebContentFormat.Raw)); return(replyMessage); } if (request.Properties.TryGetValue(HttpRequestMessageProperty.Name, out propObj)) { var prop = (HttpRequestMessageProperty)propObj; var accept = prop.Headers[HttpRequestHeader.Accept]; if (accept != null) { if (jsonContentTypes.IsMatch(accept)) { JsonSerializer j = new JsonSerializer(); return(j.Serialize(operation, messageVersion, parameters, result)); } if (protoContentTypes.IsMatch(accept)) { ProtobufSerializer j = new ProtobufSerializer(); return(j.Serialize(operation, messageVersion, parameters, result)); } } } XmlSerializer x = new XmlSerializer(); return(x.Serialize(operation, messageVersion, parameters, result)); }
public Message SerializeReply(MessageVersion messageVersion, object[] parameters, object result) { Message request = OperationContext.Current.RequestContext.RequestMessage; object propObj; if (result is Stream) { byte[] data; if (result is MemoryStream) { data = ((MemoryStream) result).ToArray(); } else { using (MemoryStream ms = new MemoryStream()) { ((Stream)result).CopyTo(ms); data=ms.ToArray(); } } System.ServiceModel.Channels.Message replyMessage = System.ServiceModel.Channels.Message.CreateMessage(messageVersion, operation.Messages[1].Action, new RawBodyWriter(data)); replyMessage.Properties.Add(WebBodyFormatMessageProperty.Name, new WebBodyFormatMessageProperty(WebContentFormat.Raw)); return replyMessage; } if (request.Properties.TryGetValue(HttpRequestMessageProperty.Name, out propObj)) { var prop = (HttpRequestMessageProperty) propObj; var accept = prop.Headers[HttpRequestHeader.Accept]; if (accept != null) { if (jsonContentTypes.IsMatch(accept)) { JsonSerializer j = new JsonSerializer(); return j.Serialize(operation, messageVersion, parameters, result); } if (protoContentTypes.IsMatch(accept)) { ProtobufSerializer j=new ProtobufSerializer(); return j.Serialize(operation, messageVersion, parameters, result); } } } XmlSerializer x=new XmlSerializer(); return x.Serialize(operation, messageVersion, parameters, result); }