【问题标题】:accessing blob properties for LastModified attribute访问 LastModified 属性的 blob 属性
【发布时间】:2019-07-05 04:46:04
【问题描述】:

我正在编写一些代码来检查 blob 上的 LastModified 属性。似乎无法访问 blob 的属性。我怎样才能做到这一点?

注意:在 Visual Studio 中调试时,我可以看到我需要的信息。

下面是我尝试存储 blob 信息以供以后比较的位置的 sn-p

  if (blob is CloudBlockBlob)
                {
                    var blobFileName = blob.Uri.Segments.Last().Replace("%20", " ");
                    var blobFilePath = blob.Uri.AbsolutePath.Replace(blob.Container.Uri.AbsolutePath + "/", "").Replace("%20", " ");
                    var blobPath = blobFilePath.Replace("/" + blobFileName, "");
                    var blobLM = blob.Properties.LastModified; // this is where I cannot access the LastModified poperty
                    blobInfos.Add(new BlobFileInfo
                    {
                        FileName = blobFileName,
                        BlobPath = blobPath,
                        BlobFilePath = blobFilePath,
                        Blob = blob,
                        LastModified = blobLM
                    });
                }

【问题讨论】:

  • 你说不能访问最后修改日期属性是什么意思?
  • @GauravMantri 它说 IListBlobItem 不包含“属性”的定义...

标签: c# azure properties containers blob


【解决方案1】:

请将blob 转换为CloudBlockBlob,这应该可以解决您的问题。

例如:

if (blob is CloudBlockBlob)
{
    var cloudBlockBlob = (CloudBlockBlob) blob;
    var blobFileName = cloudBlockBlob.Uri.Segments.Last().Replace("%20", " ");
    var blobFilePath = cloudBlockBlob.Uri.AbsolutePath.Replace(cloudBlockBlob.Container.Uri.AbsolutePath + "/", "").Replace("%20", " ");
    var blobPath = blobFilePath.Replace("/" + blobFileName, "");
    var blobLM = cloudBlockBlob.Properties.LastModified; // this is where I cannot access the LastModified poperty
    blobInfos.Add(new BlobFileInfo
    {
        FileName = blobFileName,
        BlobPath = blobPath,
        BlobFilePath = blobFilePath,
        Blob = cloudBlockBlob,
        LastModified = blobLM
    });
}

【讨论】:

    【解决方案2】:

    默认不加载元数据和属性,见the docs

    检索存储资源的属性和元数据值是一个两步过程。在读取这些值之前,您必须通过调用 FetchAttributes 或 FetchAttributesAsync 方法显式获取它们。例外情况是,如果您正在对资源调用 Exists 或 ExistsAsync 方法。当您调用其中一种方法时,Azure 存储会在后台调用适当的 FetchAttributes 方法,作为对 Exists 方法的调用的一部分。

    因此,在访问属性之前,请执行await blob.FetchAttributesAsync();(或任何overloads)之类的调用。

    如果需要,还有一个非异步的FetchAttributes

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-02-12
      • 2016-02-13
      • 2012-12-07
      • 2015-11-03
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多