Azure 函数复制上传触发的文件

Azure Function to duplicate file triggered by upload

我正在尝试扩展允许您在文件上传到 blob 存储后记录信息的基本教程。教程中的代码有效,并从此处提取:

https://docs.microsoft.com/en-us/azure/azure-functions/functions-create-storage-blob-triggered-function

我现在正在尝试添加一个输出,将该文件复制到另一个容器。我正在使用在此处找到的输出示例中找到的代码:

https://docs.microsoft.com/en-us/azure/azure-functions/functions-bindings-storage-blob-output?tabs=csharp#example

我的代码只是对原始示例的一个小补充。

run.csx:

using System.IO;
using System.Collections.Generic;
using Microsoft.Azure.WebJobs;

public static void Run([BlobTrigger("samples-workitems/{name}")] Stream myBlob, [Blob("copytwotkelly/{name}", FileAccess.Write)] Stream duplicateUpload, string name, ILogger log)
{
    log.LogInformation($"C# Blob trigger function Processed blob\n Name:{name} \n Size: {myBlob.Length} Bytes");

    myBlob.CopyTo(duplicateUpload);
}

function.json:

{
  "bindings": [
    {
      "name": "myBlob",
      "type": "blobTrigger",
      "direction": "in",
      "path": "samples-workitems/{name}",
      "connection": "AzureWebJobsStorage"
    },
    {
      "name": "duplicateUpload",
      "path": "copytwotkelly/{name}",
      "connection": "AzureWebJobsStorage",
      "direction": "out",
      "type": "blob"
    }
  ]
}

当函数触发时,我收到错误消息:

2020-11-25T06:29:57.518 [错误] run.csx(5,25):错误 CS0246:找不到类型或命名空间名称 'BlobTriggerAttribute'(您是否缺少使用指令或程序集引用?) 2020-11-25T06:29:57.580 [错误] run.csx(5,25): 错误 CS0246: 找不到类型或命名空间名称 'BlobTrigger'(是否缺少 using 指令或程序集参考?) 2020-11-25T06:29:57.672 [错误] run.csx(5,82):错误 CS0246:找不到类型或命名空间名称 'BlobAttribute'(您是否缺少 using 指令或程序集参考?) 2020-11-25T06:29:57.729 [错误] run.csx(5,82):错误 CS0246:找不到类型或命名空间名称 'Blob'(您是否缺少 using 指令或程序集参考资料?)

但据我所知,我已正确遵循教程中的配置说明。它实际上并没有在示例中显示 .json 文件,所以我不确定我做错了什么。我错过了什么?这些 类 不是它在使用 Microsoft.Azure.WebJobs 时要求的吗?我提到的?在此先感谢您的帮助。

下面的代码在我这边工作正常:

function.json

{
  "bindings": [
    {
      "name": "myBlob",
      "type": "blobTrigger",
      "direction": "in",
      "path": "test1/{name}",
      "connection": "AzureWebJobsStorage"
    },
    {
      "name": "myOutputBlob",
      "type": "blob",
      "path": "test2/{name}",
      "connection": "AzureWebJobsStorage",
      "direction": "out"
    }
  ]
}

run.csx

public static void Run(Stream myBlob,Stream myOutputBlob, string name, ILogger log)
{
    log.LogInformation($"C# Blob trigger function Processed blob\n Name:{name} \n Size: {myBlob.Length} Bytes");
    myBlob.CopyTo(myOutputBlob);
}

这是官方文档:

https://docs.microsoft.com/en-us/azure/azure-functions/functions-bindings-storage-blob-output?tabs=csharp-script#example