- c - 在位数组中找到第一个零
- linux - Unix 显示有关匹配两种模式之一的文件的信息
- 正则表达式替换多个文件
- linux - 隐藏来自 xtrace 的命令
几个小时以来,我一直在尝试在使用 Azure SDK 创建的 blob 上设置一些元数据。我使用 BeginUploadFromStream()
异步上传数据,一切顺利。上传完成后,我可以使用 Blob 的 URI 访问该 Blob,因此它已成功创建,但是我设置的任何元数据都不会保留。
我在调用EndUploadFromStream()
之后设置了元数据。
我尝试通过 documentation 找到的三种方式设置元数据:
// 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);
设置元数据后,我调用 myBlob.SetMetadata()
将元数据保存到 Azure,如文档所指定,但它不粘。该调用不会引发任何异常,但是当我获得对我的 blob 的新引用时,它没有任何元数据。
我也尝试使用 BeginSetMetadata()
和 EndSetMetadata()
异步保存元数据,但结果相似。
我开始认为我在这里遗漏了一些非常微不足道的东西,但是在盯着它看了五个小时之后,我仍然不明白我哪里出了问题?
最佳答案
SetMetadata 应该按预期工作。但仅仅获取对 blob 的引用不足以读取元数据。
获取blob引用后,需要调用FetchAttributes CloudBlob 上的方法。这将加载所有属性和元数据,只有这样您才能访问之前设置的元数据:
// 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()));
}
关于c# - 即使我调用 CloudBlob.SetMetadata,Blob 元数据也不会保存,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13031149/
这个问题已经有答案了: Differences between Azure Block Blob and Page Blob? (6 个回答) 已关闭 1 年前。 看起来像CloudBlob有 3 个
我使用 SQL Azure 来存储 Blob 元数据,并使用 Azure Blob 存储来存储实际的 Blob。 Blob 创建/删除是通过在环境 TransactionScope 中登记这些操作来实
任务 使用原始文件名将文件上传到 Azure Blob Storage,并将文件名作为 meta-data 分配给 CloudBlob 问题 元数据中不允许使用这些字符,但可以接受作为blob名称:
以下单元测试失败: [TestMethod] public void Add_file_to_blob_and_retrieve_it() { var blobName = Guid.NewG
使用 Windows Azure 存储客户端库,CloudBlob.OpenRead() 方法仅读取 4 mb 的数据。如何使用 OpenRead 方法读取完整流。 CloudBlob blob =
使用 Windows Azure 存储客户端库,CloudBlob.OpenRead() 方法仅读取 4 mb 的数据。如何使用 OpenRead 方法读取完整流。 CloudBlob blob =
我想将用户上传到我的网站的文件保存到我的 Azure Blob 中,并且我正在使用 CloudBlob.UploadFromStream 方法来执行此操作,但我想确保在做更多工作之前文件已顺利完成保存
我正在尝试从我的 Azure 存储帐户下载二进制文件。最初,我使用 CloudBlob.DownloadToFileAsync(),它允许我提供 IProgress 参数并获取传输进度更新。 但是,在
我一定在这里遗漏了一些明显的东西,但我发现自己无法进行我认为合法的向上转换。我正在尝试将数据上传到 Azure 中的 Blob 存储,并且想使用方法 CloudBlob.UploadText(stri
我正在尝试通过流从 cloudBlob 下载文件。我引用这篇文章CloudBlob 这是下载 blob 的代码 public Stream DownloadBlobAsStream(CloudStor
编辑:扩展代码示例以显示如何加载 destinationBlob。 我们正在利用直接帐户到帐户复制来传输一组 blob。由于属性在进程启动时会被覆盖,因此我们会定期监视目标 blob,然后在复制完成时
编辑:扩展代码示例以显示如何加载 destinationBlob。 我们正在利用直接帐户到帐户复制来传输一组 blob。由于属性在进程启动时会被覆盖,因此我们会定期监视目标 blob,然后在复制完成时
几个小时以来,我一直在尝试在使用 Azure SDK 创建的 blob 上设置一些元数据。我使用 BeginUploadFromStream() 异步上传数据,一切顺利。上传完成后,我可以使用 Blo
我正在尝试获取有关 Azure blob(上次修改的 UTC 日期时间)的一些信息。此信息存储在 CloudBlob.Properties.LastModifiedUtc 属性中。 如果我使用方法 G
我有以下代码,该代码使用已弃用的 Microsoft.WindowsAzure.StorageClient 并已升级到 Microsoft.WindowsAzure.Storage,现在我无法使用下面
我很确定这是 Windows Azure SDK 的限制(使用最新的 1.4),但必须有一种方法可以解决这个问题,而无需使用手动 REST... 代码: CloudBlob blob = contai
所以我一直在浏览https://learn.microsoft.com/en-us/learn/modules/copy-blobs-from-command-line-and-code/7-move
我想创建端点来传输存储在 azure CloudBlob 中的视频流。这是我的代码片段: public async Task GetVideo(string videoId) {
我似乎收到了 403: HTTP/1.1 403 Server failed to authenticate the request. Make sure the value of Authoriza
我似乎收到了 403: HTTP/1.1 403 Server failed to authenticate the request. Make sure the value of Authoriza
我是一名优秀的程序员,十分优秀!