我正在为我的应用程序创建一个.net包装器服务,该服务将Azure Blob存储用作文件存储。我的应用程序为我的系统上的每个“帐户”创建一个新的CloudBlobContainer
。每个帐户都限制为最大存储量。
查询Azure CloudBlobContainer的当前大小(空间利用率)的最简单,最有效的方法是什么?
答案 0 :(得分:13)
仅供参考,这是答案。希望这可以帮助。
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;
}
答案 1 :(得分:0)
从WindwosAzure.Storage.dll的v9.x.x.x或更高版本开始(从Nuget软件包开始),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);