Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/csharp-4.0/2.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# 4.0 Gzip并上传到Azure blob_C# 4.0_Azure_Gzip - Fatal编程技术网

C# 4.0 Gzip并上传到Azure blob

C# 4.0 Gzip并上传到Azure blob,c#-4.0,azure,gzip,C# 4.0,Azure,Gzip,我试图gzip并将一个静态js文件上传到Azure blob,但最终得到的是一个0字节的blob。有人能告诉我我做错了什么吗 var filePath = "C:\test.js"; using (var compressed = new MemoryStream()) { using (var gzip = new GZipStream(compressed, CompressionMode.Compress)) { var bytes = File.ReadAllBytes(fil

我试图gzip并将一个静态js文件上传到Azure blob,但最终得到的是一个0字节的blob。有人能告诉我我做错了什么吗

var filePath = "C:\test.js";

using (var compressed = new MemoryStream()) {
using (var gzip = new GZipStream(compressed, CompressionMode.Compress)) {
    var bytes = File.ReadAllBytes(filePath);
    gzip.Write(bytes, 0, bytes.Length);

    var account = CloudStorageAccount.Parse("...");
    var blobClient = new CloudBlobClient(account.BlobEndpoint, account.Credentials);
    var blobContainer = blobClient.GetContainerReference("temp");
    var blob = blobContainer.GetBlockBlobReference(Path.GetFileName(filePath));
    blob.Properties.ContentEncoding = "gzip";
    blob.Properties.ContentType = "text/javascript";
    blob.Properties.CacheControl = "public, max-age=3600";

    blob.UploadFromStream(compressed);
}
}

您需要将压缩流上的流位置重置为零。您已经将数据写入流中,但是当您在最后一行从流中上载时,流的位置位于您写入的数据的末尾,因此blob.UploadFromStream从流中的当前位置开始,后面没有任何内容

在执行上载之前添加以下内容:

compressed.Position = 0;
应该上传流的全部内容


这不一定是Azure的事情,大多数与流一起工作的代码在流的当前位置上运行。我已经被它烧坏了好几次。

在发布有关存储客户端的问题时,如果包含您正在使用的存储库的版本,将非常有帮助。两个版本之间存在差异。