7

我正在为我的应用程序创建一个 .net 包装服务,该服务使用 Azure Blob 存储作为文件存储。CloudBlobContainer我的应用程序为我系统上的每个“帐户”创建一个新帐户。每个帐户都被限制为最大存储量。

查询 Azure CloudBlobContainer` 的当前大小(空间利用率)的最简单和最有效的方法是什么?

4

2 回答 2

14

仅供参考,这是答案。希望这可以帮助。

public static long GetSpaceUsed(string containerName)
{
    var container = CloudStorageAccount
        .Parse(ConfigurationManager.ConnectionStrings["StorageConnection"].ConnectionString)
        .CreateCloudBlobClient()
        .GetContainerReference(containerName);
    if (container.Exists())
    {
        return (from CloudBlockBlob blob in
                container.ListBlobs(useFlatBlobListing: true)
                select blob.Properties.Length
               ).Sum();
    }
    return 0;
}
于 2013-03-12T16:14:34.443 回答
3

从 WindwosAzure.Storage.dll(来自 Nuget 包)的 v9.xxx 或更高版本开始,该ListBlobs方法不再公开可用。因此,针对 .NET Core 2.x+ 的应用程序的解决方案如下:

BlobContinuationToken continuationToken = null;
long totalBytes = 0;
do
{
    var response = await container.ListBlobsSegmentedAsync(continuationToken);
    continuationToken = response.ContinuationToken;
    totalBytes += response.Results.OfType<CloudBlockBlob>().Sum(s => s.Properties.Length);
} while (continuationToken != null);
于 2019-01-14T13:30:15.250 回答