2016-11-21 55 views
0

我在Azure中有一个BLOB容器,我已经保存了一些块BLOB。以下代码是读取特定BLOB的方法,我将保存在变量BLOB ETag中,但它始终返回null。Azure块BLOB ETag为空

public static string DownloadAsText(string ContainerName, string BlobName, out string ETag) 
{ 
    CloudBlobContainer BlobContainer = CreateCloudBlobClient().GetContainerReference(ContainerName); 
    CloudBlockBlob Blob = BlobContainer.GetBlockBlobReference(BlobName); 
    ETag = Blob.Properties.ETag; 
    return Blob.DownloadText(); 
} 
+0

为什么你需要blob的ETag?实际上,BlobContainer.GetBlockBlobReference()不会触发对Azure存储服务的请求,您可能需要调用Blob.FetchAttributes()来从服务器端获取信息。 –

回答

1

据我所知,CloudBlockBlob.GetBlockBlobReference只是在客户端的容器中返回一个块blob的引用。为了检索Blob的属性,需要明确地向服务器端发送请求。

此外,ETag用于管理Blob服务中的并发。它是blob(文件)的标识符,每次在blob(文件)上执行更新操作时都会更新它。欲了解更多详情,您可以按照官方tutorial的方式更好地了解ETag并充分利用它。