Chr*_*son 9 c# asp.net azure azure-storage-blobs azure-sdk-.net
几个小时以来,我一直在尝试使用Azure SDK在我创建的blob上设置一些元数据.我使用异步上传数据BeginUploadFromStream(),一切顺利.我可以在上传完成后使用其URI访问blob,因此创建成功,但我设置的任何元数据都不会保留.
我在调用后设置了元数据EndUploadFromStream().
我尝试通过文档找到三种方式来设置元数据:
// First attempt
myBlob.Metadata["foo"] = "bar";
// Second attempt
myBlob.Metadata.Add("foo", "bar");
//Third attempt
var metadata = new NameValueCollection();
metadata["foo"] = "bar";
blob.Metadata.Add(metadata);
Run Code Online (Sandbox Code Playgroud)
设置元数据后,我调用myBlob.SetMetadata()将元数据保存到Azure,如文档所指定,但它不会坚持.该调用不会引发任何异常,但是当我获得对我的blob的新引用时,它没有任何元数据.
我已尝试异步保存元数据以及使用BeginSetMetadata()和EndSetMetadata()但结果相似.
我开始认为我错过了一些非常微不足道的东西,但是在盯着它看了五个小时后,我仍然无法理解我哪里出错了?
San*_*tia 21
SetMetadata应该按预期工作.但仅仅获取blob的引用不足以读取元数据.
获取blob引用后,需要在该CloudBlob上调用FetchAttributes方法.这将加载所有属性和元数据,然后您才能访问先前设置的元数据:
// Get a reference to a blob.
CloudBlob blob = blobClient.GetBlobReference("mycontainer/myblob.txt");
// Populate the blob's attributes.
blob.FetchAttributes();
// Enumerate the blob's metadata.
foreach (var metadataKey in blob.Metadata.Keys)
{
Console.WriteLine("Metadata name: " + metadataKey.ToString());
Console.WriteLine("Metadata value: " + blob.Metadata.Get(metadataKey.ToString()));
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
5671 次 |
| 最近记录: |