Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/20.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 停止WCF MessageInspector将消息自动编码为Base64String_C#_.net_Wcf_Bytearray_Base64 - Fatal编程技术网

C# 停止WCF MessageInspector将消息自动编码为Base64String

C# 停止WCF MessageInspector将消息自动编码为Base64String,c#,.net,wcf,bytearray,base64,C#,.net,Wcf,Bytearray,Base64,我有一个实现的MessageInspector类,在它的BeforeSendReply方法中,我截取所有WCF回复,以便在发送消息之前压缩数据。数据是字节数组 问题是,当我用压缩的ByteArray重新构造消息时,WCF将消息编码为Base64字符串,然后将其发送出去,有没有办法禁用这种自动编码 代码: 在浏览器中回复: 答案可能如下: 看看这个…你可以用CreateBaryWriter把消息写成二进制 MTOM看起来很有趣,我来看看。谢谢 public void BeforeSendRe

我有一个实现的MessageInspector类,在它的BeforeSendReply方法中,我截取所有WCF回复,以便在发送消息之前压缩数据。数据是字节数组

问题是,当我用压缩的ByteArray重新构造消息时,WCF将消息编码为Base64字符串,然后将其发送出去,有没有办法禁用这种自动编码

代码:

在浏览器中回复:

答案可能如下:

看看这个…你可以用CreateBaryWriter把消息写成二进制


MTOM看起来很有趣,我来看看。谢谢
public void BeforeSendReply(ref Message reply, object correlationState)
{
    if (!reply.IsFault && !reply.IsEmpty)
    {
        //read json
        XmlDictionaryReader bodyReader = reply.GetReaderAtBodyContents();
        MemoryStream ms = new MemoryStream();
        XmlDictionaryWriter jsonWriter = JsonReaderWriterFactory.CreateJsonWriter(ms);
        jsonWriter.WriteNode(bodyReader, true);
        jsonWriter.Flush();

        //compress data
        byte[] ba = ms.ToArray();
        byte[] data = ZLibCompressor.Compress(ba);

        //rebuild and send reply
        Message newReply = Message.CreateMessage(MessageVersion.None, null, data);
        reply = newReply;
    }
}