public Message DecompressMessage(Message sourceMessage) { if (!sourceMessage.IsCompressed()) { return(sourceMessage); } CompressionAlgorithm algorithm = sourceMessage.GetCompressionAlgorithm(); sourceMessage.RemoveCompressionHeader(); byte[] compressedBody = sourceMessage.GetCompressedBody(); byte[] decompressedBody = DataCompressor.Decompress(compressedBody, algorithm); string newMessageXml = Encoding.UTF8.GetString(decompressedBody); XmlTextReader reader = new XmlTextReader(new StringReader(newMessageXml)); Message decompressedMessage = Message.CreateMessage(sourceMessage.Version, null, reader); decompressedMessage.Headers.CopyHeadersFrom(sourceMessage); decompressedMessage.Properties.CopyProperties(sourceMessage.Properties); return(decompressedMessage); }