在Azure Blob上更新LastModified

时间:2014-05-01 19:47:02

标签: c# azure azure-storage azure-storage-blobs

我正在移植代码以在C#中使用Azure的Storage SDK。

传统上,我会调用它来更新修改文件的最后写入/修改时间:

File.SetLastWriteTimeUtc(fileName, lastWriteTimeUtc);

要更新blob上次修改时间,我正在尝试做类似这样的事情但不能因为LastModified无法访问:

CloudBlockBlob blob = container.GetBlockBlobReference(fileName);
blob.Properties.LastModified = lastWriteTimeUtc;
blob.SetProperties();

编译错误:

Property or indexer 'Microsoft.WindowsAzure.Storage.Blob.BlobProperties.LastModified' cannot be assigned to -- it is read only

如何更新LastModified属性?它不会总是更新到当前时间,所以我不能只重新上载/触摸文件。

3 个答案:

答案 0 :(得分:2)

Azure允许您将 METADATA 添加到容器和blob中。 LastModified 是一个内部属性,没有必要让外部各方更新它 - 它应该反映它的含义。

在您的情况下,您似乎希望在迁移内容后保留旧值,并且内容可能不允许在内部添加属性。说,这是一张图片。

在这种情况下,使用元数据添加和读取其他属性。 Article about Metadata on MSDN

答案 1 :(得分:0)

您可以使用SetMetadata方法更新LastModified属性。

答案 2 :(得分:-2)

你想要的实际上是一种“触摸”操作。您必须重新上传BLOB才能更改LastModified属性。

修改

如果您想管理自己的自定义上次修改变量,您可以做的最好的事情是在BLOB中存储自定义的“上次修改”字段并自行使用,而不是依赖于提供的本地LastModified作者:Azure BLOB。