DownloadToStreamAsync返回空流C#
我正在尝试从Azure上的blob帐户下载blob文件作为bytearray。我这样做DownloadToStreamAsync返回空流C#,c#,azure,azure-storage-blobs,C#,Azure,Azure Storage Blobs,我正在尝试从Azure上的blob帐户下载blob文件作为bytearray。我这样做 var blockBlob = blobContainer.GetBlockBlobReference(id); using (var mStream = new MemoryStream()) { blockBlob.DownloadToStreamAsync(mStream);
var blockBlob = blobContainer.GetBlockBlobReference(id);
using (var mStream = new MemoryStream())
{
blockBlob.DownloadToStreamAsync(mStream);
result = mStream.ToArray();
}
上面的代码返回一个空流。我的azure blob帐户上确实有该文件,我检查了由代码生成的uri,它与我想作为bytearray下载的azure blob上的文件相同
有没有更好的方法下载azure blob文件,如c#中的bytearray?两个选项供您参考
- 正如@Gaurav所说,使用
等待blockBlob.DownloadToStreamAsync(mStream)
请注意,如果使用此方法,则您的方法应更改为public async Task methodname()
- 如果不需要异步方法,只需使用
blockBlob.DownloadToStream(mStream)
using (var mStream = new MemoryStream())
{
await blockBlob.DownloadToStreamAsync(mStream);
result = mStream.ToArray();
}
您得到的是空的,因为您试图在它不可用时从中获取值。另外,请等待异步操作完成。尝试在DownloadToStreamAsync方法调用之前添加Wait。类似于“wait blockBlob.DownloadToStreamAsync(ms)”,而这是“正确的”。这可能需要对async和await的作用以及如何使用关键字进行一些澄清,因为OP可能对async和await不太了解,我得到的是带有此答案的空文件。结果前面应该至少有var,不是吗?