【问题标题】:Azure function will not create blob metadataAzure 函数不会创建 blob 元数据
【发布时间】:2019-07-10 03:02:18
【问题描述】:

我喜欢将一些元数据写入现有的 blob。该函数运行没有任何错误,但 blob 元数据未更改或未创建。

 #r "Microsoft.WindowsAzure.Storage"

 using System; using System.Configuration; using System.Net; using
 System.Text; using Microsoft.Azure; using
 Microsoft.WindowsAzure.Storage; using
 Microsoft.WindowsAzure.Storage.Blob;

 public static void Run(string myQueueItem, ILogger log) {
     string[] myQueueItems = myQueueItem.Split(':');

     string DocumentID = myQueueItems[0];
     string MetaDataKey = myQueueItems[1];
     string MetaDataValue = myQueueItems[2];


     CloudStorageAccount storageAccount = CloudStorageAccount.Parse("");
     CloudBlobClient blobClient = storageAccount.CreateCloudBlobClient();
     CloudBlobContainer container = blobClient.GetContainerReference("test123");

     CloudBlob blob = container.GetBlobReference("teams.xlsx");
     blob.FetchAttributesAsync();

     if (blob.Metadata.ContainsKey(MetaDataKey))
     {
         blob.Metadata[MetaDataKey] = MetaDataValue;
     }
     else{
         blob.Metadata.Add(MetaDataKey, MetaDataValue);
     }

     blob.SetMetadataAsync();

     log.LogInformation($"C# Queue trigger function processed: {blob.Name}");

 }

输入:测试:测试:测试 输出:C# 队列触发函数已处理:teams.xlsx

函数运行但未在 blob teams.xlsx 上创建值为“Test”的元数据“Test”。

问候 斯蒂芬

【问题讨论】:

  • 我不熟悉这个操作,但假设SetMetadataAsync() 是真正的async,你正在做一个即发即弃的调用,因为你没有await 它。可能是请求在操作完成之前结束,导致您的问题。这是一种可怕的做法,但只是为了看看会发生什么,直到你可以正确实施,看看如果你把它改成blob.SetMetadataAsync().Result;会发生什么
  • 谢谢,但是。结果将不起作用。我将重建代码,以便可以使用 await。当我将代码粘贴到控制台应用程序中时,结果将相同。

标签: c# azure-functions azure-blob-storage


【解决方案1】:

感谢 Crowcoder 的帮助。我更改了代码,现在它运行了。

await blob.SetMetadataAsync();

【讨论】:

    猜你喜欢
    • 2019-07-03
    • 2020-11-17
    • 2019-12-16
    • 2018-06-09
    • 1970-01-01
    • 2014-10-16
    • 1970-01-01
    • 2022-10-07
    • 2021-07-20
    相关资源
    最近更新 更多