gpt4 book ai didi

C# HttpListener 响应 + GZipStream

转载 作者:太空狗 更新时间:2023-10-29 22:17:00 26 4
gpt4 key购买 nike

我将 HttpListener 用于我自己的 http 服务器(我不使用 IIS)。我想通过 GZip 压缩来压缩我的 OutputStream:

byte[] refBuffer = Encoding.UTF8.GetBytes(...some data source...);

var varByteStream = new MemoryStream(refBuffer);

System.IO.Compression.GZipStream refGZipStream = new GZipStream(varByteStream, CompressionMode.Compress, false);

refGZipStream.BaseStream.CopyTo(refHttpListenerContext.Response.OutputStream);

refHttpListenerContext.Response.AddHeader("Content-Encoding", "gzip");

但我在 Chrome 中遇到错误:

ERR_CONTENT_DECODING_FAILED

如果我删除 AddHeader,它就可以工作,但响应的大小似乎没有被压缩。我做错了什么?

最佳答案

问题是您的传输方向错误。您要做的是将 GZipStream 附加到 Response.OutputStream,然后在 MemoryStream 上调用 CopyTo,传入 GZipStream,如下所示:

refHttpListenerContext.Response.AddHeader("Content-Encoding", "gzip"); 

byte[] refBuffer = Encoding.UTF8.GetBytes(...some data source...);

var varByteStream = new MemoryStream(refBuffer);

System.IO.Compression.GZipStream refGZipStream = new GZipStream(refHttpListenerContext.Response.OutputStream, CompressionMode.Compress, false);

varByteStream.CopyTo(refGZipStream);
refGZipStream.Flush();

关于C# HttpListener 响应 + GZipStream,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7438217/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com