我正在研究允许用户下载Azure Blob存储项目的功能。
我正在尝试使用以下方法获取blob列表:
var list = await container.GetBlobsAsync(BlobTraits.All, BlobStates.All, string.Empty).ConfigureAwait(false);
这是我的错误:
错误CS1061'ConfiguredCancelableAsyncEnumerable'不包含'GetAwaiter'的定义,并且找不到可访问的扩展方法'GetAwaiter'接受类型为'ConfiguredCancelableAsyncEnumerable'的第一个参数(您是否缺少using指令或程序集参考?)
C#7.3是否可以使用异步功能?还是要使用异步调用获取容器中的所有Blob,我都需要升级到8.0 C#?
如果我将代码更改为此:
await foreach (BlobItem page in container.GetBlobsAsync(BlobTraits.None, BlobStates.None, string.Empty))
{
yield return container.GetBlobClient(page.Name);
}
然后我出现此错误:
错误CS8370在C#7.3中不提供功能“异步流”。请使用语言版本8.0或更高版本。
我知道GetBlobsAsync()返回AsyncPageable<>
,并且我假设它仅在C#8.0中可用吗?
答案 0 :(得分:3)
这些是我能想到的两个选项:
使用枚举器,例如
var blobs = blobContainerClient.GetBlobsAsync()
List<BlobItem> blobList = new List<BlobItem>();
IAsyncEnumerator<BlobItem> enumerator = blobs.GetAsyncEnumerator();
try
{
while (await enumerator.MoveNextAsync())
{
blobList.Add(enumerator.Current);
}
}
finally
{
await enumerator.DisposeAsync();
}