次のコードは、blobファイルサイズ0を返します。
public long GetFileSize(string fileUrl)
{
var blob = GetBlobContainer().GetBlobReference(fileUrl);
return blob == null ? 0 : blob.Properties.Length;
}
、ほとんどブロブが見つからないのと同じです。しかし、ブロブを削除すると、ブロブが削除されることがわかります。これは、以下を削除するときに機能します。
void DeleteFileFromBlob(string fileUrl, bool deleteSnapshots)
{
var blob = GetBlobContainer().GetBlobReference(fileUrl);
if (deleteSnapshots)
{
var options = new BlobRequestOptions { DeleteSnapshotsOption = DeleteSnapshotsOption.IncludeSnapshots };
blob.DeleteIfExists(options);
}
else blob.DeleteIfExists();
}
基本的に上記と同じコードなので、blobが見つかったようです。
ブロブを反復処理すると、ストレージに格納されているバイトの合計量を計算するときと同じように、正しいブロブファイルサイズが取得されます。
public long GetStorageUsageByteSize()
{
var blobClient = GetBlobClient();
return (from container in blobClient.ListContainers()
select
(from CloudBlob blob in
container.ListBlobs(new BlobRequestOptions { UseFlatBlobListing = true })
select blob.Properties.Length
).Sum()
).Sum();
}
したがって、URLでGetBlobReferenceを使用すると、CloubdBlob::Properties.Lengthが0を返す理由がわかりません。