如何绑定到ICloudBlob或其他一些(非字符串)类型

Ste*_*rup 5 azure azure-functions

我一直在尝试创建一个Azure功能,当我将图像添加到我的blob存储帐户上的容器时触发.

唯一似乎有效的是,当我有一个字符串参数,但文件是图像,所以我没有使用包含图像数据的字符串.

所以我一直在尝试我可以在网上找到的每一个例子(不是那么多),现在我已经尝试了来自azure webjobs sdk的样本- 这也不是真的.所以要么我是愚蠢的,我现在感觉到的,我错过了一些明显的东西?

我得到了一些错误:

Microsoft.Azure.WebJobs.Host:错误索引方法'Functions.thumbnailgenerator'.Microsoft.Azure.WebJobs.Host:无法绑定BlobTrigger以键入"Microsoft.WindowsAzure.Storage.Blob.ICloudBlob".

Microsoft.Azure.WebJobs.Host:错误索引方法'Functions.thumbnailgenerator'.Microsoft.Azure.WebJobs.Host:无法绑定BlobTrigger以键入"Microsoft.WindowsAzure.Storage.Blob.CloudBlockBlob".

现在我正在尝试的功能是上面示例中给出的功能,就像我尝试过的其他许多功能一样,除了字符串外,它不能用于任何其他功能.

那么我应该如何创建函数(使用C#)和function.json文件,以使其与blob一起使用,并且最好使用blob的名称作为字符串.要么是blob in,要么是out,其中out blob的名称位于不同的容器中,并且名称以硬编码字符串为前缀.

这就是我现在得到的,它没有运行:

function.json

{
  "bindings": [
{
  "type": "blobTrigger",
  "name": "blob",
  "direction": "in",
  "path": "kitimages/{name}.{ext}"
},
 {
        "type": "blob",
        "name": "output",
        "direction": "inout",
        "path": "thumbnails/{name}_300_200.{ext}"
    }  ],
  "disabled": false
}
Run Code Online (Sandbox Code Playgroud)

run.csx

#r "Microsoft.WindowsAzure.Storage"
using System;
using Microsoft.Azure.WebJobs.Host;
using Microsoft.WindowsAzure.Storage.Blob;
public static void Run(CloudBlockBlob blob, CloudBlockBlob output, TraceWriter log)
{
    log.Info($"C# Blob trigger function processed a blob. Blob={blob.Name}");
}
Run Code Online (Sandbox Code Playgroud)

编辑:看看这里我的问题的最终解决方案:在云中完成工作

lin*_*nna 4

我们需要改进这里的模板,这是您遇到的常见陷阱(对此感到抱歉!)。我们正在修复,请参阅 GitHub 问题:让用户更轻松地开始使用二进制 blob 触发器

有一个绑定到流的内置模板。转到“新建函数”,然后选择“语言”为“C#” ,“场景”选择“示例”。

有关使用 CloudBlockBlob 绑定的更高级示例(需要尚未记录的 InOut 绑定方向),请参阅 ContosoMoments 中的函数示例:DeleteImages Function

请注意,您可以浏览 GitHub 存储库中的所有模板: https: //github.com/Azure/azure-webjobs-sdk-templates

在此输入图像描述