【发布时间】:2020-11-02 02:15:38
【问题描述】:
过去一两年我一直在使用Microsoft.Azure.Storage.Blob,这就是我计算所有容器大小的方式:
var myStorageAccount = CloudStorageAccount.Parse(myConnectionString, string.Empty));
var myClient = myStorageAccount.CreateCloudBlobClient();
var myContainers = myClient.ListContainers();
containerSize = myContainers .Sum(container =>
container.ListBlobs(null, true).Cast<CloudBlockBlob>().Sum(blobItem => blobItem.Properties.Length));
但是,该软件包现已弃用,我已升级为使用 Azure.Storage.Blobs。
我尝试使用来自here 的 ListContainers 示例,但它看起来需要 C# 8:
async static Task ListContainers(BlobServiceClient blobServiceClient,
string prefix,
int? segmentSize)
{
string continuationToken = string.Empty;
try
{
do
{
// Call the listing operation and enumerate the result segment.
// When the continuation token is empty, the last segment has been returned
// and execution can exit the loop.
var resultSegment =
blobServiceClient.GetBlobContainersAsync(BlobContainerTraits.Metadata, prefix, default)
.AsPages(continuationToken, segmentSize);
await foreach (Azure.Page<BlobContainerItem> containerPage in resultSegment)
{
foreach (BlobContainerItem containerItem in containerPage.Values)
{
Console.WriteLine("Container name: {0}", containerItem.Name);
}
// Get the continuation token and loop until it is empty.
continuationToken = containerPage.ContinuationToken;
Console.WriteLine();
}
} while (continuationToken != string.Empty);
}
catch (RequestFailedException e)
{
Console.WriteLine(e.Message);
Console.ReadLine();
throw;
}
}
我也不确定循环遍历它是否是获取存储帐户中容器总大小的正确方法。
有人可以帮忙吗?谢谢。
【问题讨论】:
-
据我所知,循环是您必须计算 blob 容器总大小的最佳/简单方法。如果您需要更详细的答案,请告诉我。
标签: c# azure azure-devops