我的应用程序使用ListBlobsSegmentedAsync,并且以下循环永不结束:
// List blobs existing in container
HashSet<string> existingBlobNames = new HashSet<string>();
BlobResultSegment segment;
do
{
segment = await container.ListBlobsSegmentedAsync(null, cancellationToken).ConfigureAwait(false);
foreach (IListBlobItem blobListItem in segment.Results)
{
CloudBlockBlob blob = blobListItem as CloudBlockBlob;
if (blob != null)
{
existingBlobNames.Add(blob.Name);
}
}
}
while (segment.ContinuationToken != null);
它总是返回完全相同的ContinuationToken并且没有结果。
答案 0 :(得分:0)
这是我从另一个服务中移植了此逻辑的方法,该服务已经成功运行了多年。原来,该服务始终存在相同的错误。但是,由于一个容器中最多可能有10个斑点,因此它永远不会被击中。
此代码实际上需要传递一个延续令牌=)这是更正的版本。
BlobContinuationToken continuationToken = null;
do
{
BlobResultSegment segment = await container.ListBlobsSegmentedAsync(continuationToken, cancellationToken).ConfigureAwait(false);
foreach (IListBlobItem blobListItem in segment.Results)
{
CloudBlockBlob blob = blobListItem as CloudBlockBlob;
if (blob != null)
{
existingBlobNames.Add(blob.Name);
}
}
continuationToken = segment.ContinuationToken;
}
while (continuationToken != null);