C# 在Service Fabric应用程序中下载2 GB文件
我正在设计一个应用程序,将支持上传和下载的XML文件限制为2 GBs。我使用Azure Blob存储作为永久存储来上载这些文件,然后下载它们。下面的一段代码抛出OutOfMemory异常:C# 在Service Fabric应用程序中下载2 GB文件,c#,.net,azure,azure-storage-blobs,C#,.net,Azure,Azure Storage Blobs,我正在设计一个应用程序,将支持上传和下载的XML文件限制为2 GBs。我使用Azure Blob存储作为永久存储来上载这些文件,然后下载它们。下面的一段代码抛出OutOfMemory异常: var blob = this.GetBlockBlobReference(blobId, blobContainerName); return await blob.DownloadTextAsync().ConfigureAwait(false); 此外,我不确定哪种方法会更快更干净。 更快的下载/
var blob = this.GetBlockBlobReference(blobId, blobContainerName);
return await blob.DownloadTextAsync().ConfigureAwait(false);
此外,我不确定哪种方法会更快更干净。
更快的下载/上传斑点,你可以考虑使用。 . 此库专为高性能上载、下载和复制Azure存储Blob和文件而设计 您可以通过以下代码设置并行线程:// Setup the number of the concurrent operations
TransferManager.Configurations.ParallelOperations = 64;
然后分别使用TransferManager.UploadAsync或TransferManager.DownloadAsync方法上载/下载blob
上传有多种方式,您可以修改它以便轻松下载。不足为奇。不要试图在内存中一次读取整个2GB文件。这在桌面应用程序中是个坏主意,更不用说云应用了。改用DownloadToFile或DownloadToStream。如果目标是另一个块体,则使用StartCopy@PanagiotisKanavosDownloadToStream不会使用内存吗?另外,它会更快吗?它不会将整个文件存储在内存中,而是将其复制到目标流。不,你不能用MemoryStream来做这个,你会得到另一个2GB大小的缓冲区。你首先想做什么?不同的方法用于不同的目的jobs@PanagiotisKanavos我们可以使用DownloadToFile和并行线程下载吗?