C# 隔离 AzureFunction - BlobOutput 参数

C# Isolated AzureFunction - BlobOutput parameter

如何将参数传递给 BlobOutput? 我需要在运行时生成 blob 名称。有没有一种声明性的方式来做到这一点? 在这里你可以看到我需要设置参数“name”的值。

    [BlobOutput("container/{name}", Connection = "AzureWebJobsStorage")]
        public static object Run([HttpTrigger(AuthorizationLevel.Anonymous, "post")] HttpRequestData req, out string name,
            FunctionContext executionContext)
{...}

我玩过执行上下文,但运气不好。

我认为您无法从 http 触发器中获取这样的 blob 名称。我可以想到以下选项。

  1. 使用队列或 blob 触发函数。有了它,您将从触发器数据本身动态获取 blob 名称。例如,

     public static void Run(
     [BlobTrigger("sample-images/{name}")] Stream image,
     [Blob("sample-images-md/{name}", FileAccess.Write)] Stream imageSmall)
    

    {

  2. 使用系统绑定表达式形成输出 blob 名称。

     public static async Task<IActionResult> Run(
         [HttpTrigger(AuthorizationLevel.Function, "get", "post", Route = "blobname")] HttpRequest req,
         [Blob("sourcefolder/output{DateTime.UtcNow}", FileAccess.Write, Connection = "AzureWebJobsStorage")] Stream blobStream,
         ILogger log)
     {
    
  3. 完全删除输出绑定并在函数本身中创建一个 blob 客户端。这将使您可以完全控制 blob 名称或您需要的任何其他内容。如果您的应用程序中有多个功能,最好创建一个单例服务并在其中放置此连接对象。