Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/310.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
DownloadToStreamAsync返回空流C#_C#_Azure_Azure Storage Blobs - Fatal编程技术网

DownloadToStreamAsync返回空流C#

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);

我正在尝试从Azure上的blob帐户下载blob文件作为bytearray。我这样做

 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,不是吗?