子木扬花 2022-06-10 17:52 采纳率: 0%
浏览 18
已结题

Remoting 数据流压缩报错

问题遇到的现象和发生背景

在使用Remoting通道压缩的时候借鉴了
https://www.cnblogs.com/openkava/archive/2007/08/10/850203.html
代码,一开始使用没有问题,但是偶尔遇到下面的异常情况,错误显示是压缩写入的时候数组越界,但是这是NZlib内部问题吗?我需要怎么解决。实际测试环境根本无法复现,只有生产环境才会出现这样的现象。如果可以通过升级解决的话,得弄清这个原因是啥?

/// <summary>
        /// 压缩数据流
        /// </summary>
        /// <param name="inStream"></param>
        /// <returns></returns>
        public static Stream getCompressedStreamCopy(Stream inStream) 
        {
            MemoryStream outStream = new MemoryStream();
            Deflater mDeflater = new Deflater(Deflater.BEST_COMPRESSION);
            DeflaterOutputStream compressStream = new DeflaterOutputStream(outStream,mDeflater);

            byte[] buf = new Byte[4096];
            int cnt = inStream.Read(buf,0,4096);
            while (cnt>0) {
                compressStream.Write(buf,0,cnt);
                cnt = inStream.Read(buf,0,4096);
            }
            compressStream.Finish();
            outStream.Seek(0,SeekOrigin.Begin);
            return outStream;
        }

问题相关代码,请勿粘贴截图

System.IndexOutOfRangeException:索引超出了数组界限。
Server stack trace:
在 NZlib.Compression.DeflaterHuffman.TallyLit(lnt32 lit)
在 NZlib.Compression.DeflaterEngine.DeflateFast(Boolean flush,Boolean finish)
在 NZlib.Compression.DeflaterEngine.Deflate(Boolean flush, Boolean finish)
在 Nzlib.Compression.Deflater.Deflate(Byte[] output, Int32 offset, Int32 length)
在 NZlib.Streams.DeflaterOutputStream.deflat()
在 NZlib.Streams. DeflaterOutputStream. Write(Byte [] buf, Int32 off, Int32 len)

Remoting.CompressionSinkCompressionHelper.getCompre
ssedStreamCopy(Stream inStream)

Remoting.CompressionSink.CompressionClientSink.ProcessMessage(IMessage msg, TransportHeaders requestHeaders,
Stream requestStream, ITransportHeaders& responseHeaders,Stream& responseStream)

System.Runtime.Remoting.Channels.BinaryClientFormatterSink.SyncProcessMessage(|Message msg) Exception rethrown at [0]:
System.Runtime.Remoting.Proxies.RealProxy.HandleReturnMessage((Message reqMsg, IMessage retMsg)

System.Runtime.Remoting.Proxies.RealProxy.Privatelnvoke(MessageData&msgData, Int32 type)

  • 写回答

0条回答 默认 最新

    报告相同问题?

    问题事件

    • 系统已结题 6月18日
    • 修改了问题 6月10日
    • 修改了问题 6月10日
    • 创建了问题 6月10日

    悬赏问题

    • ¥30 关于用python写支付宝扫码付异步通知收不到的问题
    • ¥50 vue组件中无法正确接收并处理axios请求
    • ¥15 隐藏系统界面pdf的打印、下载按钮
    • ¥15 MATLAB联合adams仿真卡死如何解决(代码模型无问题)
    • ¥15 基于pso参数优化的LightGBM分类模型
    • ¥15 安装Paddleocr时报错无法解决
    • ¥15 python中transformers可以正常下载,但是没有办法使用pipeline
    • ¥50 分布式追踪trace异常问题
    • ¥15 人在外地出差,速帮一点点
    • ¥15 如何使用canvas在图片上进行如下的标注,以下代码不起作用,如何修改