You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用C#解密解压Azure Blob Storage数据时返回空数据问题求解

问题根因
  • 核心原因是下载完成后未重置内存流的指针位置:执行dblob.DownloadToStream(compressedStream, null, doptions, null)后,compressedStream的Position属性会自动指向流的末尾,后续将该流传入GZipStream解压时,程序会从流末尾开始读取数据,无有效内容可解压,最终输出为空。
  • 次要排查点:如果下载时使用的解密配置doptions和上传时的加密配置options参数不匹配,会导致下载得到的是无效乱码数据,也会出现解压后为空的问题。
修复方案

在下载完成后、解压操作前,手动将压缩流的指针重置到起始位置即可,同时可按需校验加密配置一致性、下载流的长度是否符合预期。

修正后的解压代码
var compressedStream = new MemoryStream();

//Download and decrypt Blob data to MemoryStream
dblob.DownloadToStream(compressedStream, null, doptions, null);

// 新增代码:重置流指针到起始位置
compressedStream.Position = 0;

//Decompress Code
var bigStream = new GZipStream(compressedStream, CompressionMode.Decompress);
var bigStreamOut = new MemoryStream();
bigStream.CopyTo(bigStreamOut);
output = Encoding.UTF8.GetString(bigStreamOut.ToArray());

Console.WriteLine(output);

内容的提问来源于stack exchange,提问作者Atul Takekar

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.27 20:36:07