绑定到 C# 预编译 Azure 函数中的自定义输入属性



我正在尝试使用自定义绑定和模式来创建从 Blob 存储获取文件的 HTTP 触发的 Azure 函数。就我而言,POST HTTP请求将知道附件名称。在本文中,文档讨论了使用 csx 脚本的模式,我在 Visual Studio 中使用了预编译的 C# Azure Functions。我试图将其转换为以下内容,但它引发了运行时异常:

以下 1 个函数出错: Run: Microsoft.Azure.WebJobs.Host: 错误索引方法 'HttpTriggerGetAttachmentBlob.Run'.Microsoft.Azure.WebJobs.Host:"附件"不存在绑定参数。

这是代码:

    public class BlobInfo
    {
        public string Attachment { get; set; }
    }
    public static class HttpTriggerGetAttachmentBlob
    {
        [FunctionName("HttpTriggerGetAttachmentBlob")]
        public static async Task<HttpResponseMessage> Run([HttpTrigger(AuthorizationLevel.Function,
            "post")]
            HttpRequestMessage req, 
            TraceWriter log,
            [Blob("strings/{Attachment}")] string blobContents,
            BlobInfo blobInfo)
        {
            if(blobContents == null) {
                return req.CreateResponse(HttpStatusCode.NotFound);
            }
            return req.CreateResponse(HttpStatusCode.OK, new
            {
                data = $"{blobContents}"
            });
        }
    }

如何检索知道来自触发事件的文件名的 Blob 存储文件?

诀窍实际上是将HttpTrigger属性放在blobInfo参数上,而不是req

public static async Task<HttpResponseMessage> Run(HttpRequestMessage req,
  TraceWriter log,
  [Blob("strings/{Attachment}")] string blobContents,
  [HttpTrigger(AuthorizationLevel.Function, "post")] BlobInfo blobInfo)

这将告诉运行时您正在绑定到BlobInfo类,并且它将能够派生{Attachment}模板绑定。

注意:请务必在重新编译之前删除bin文件夹,该工具并不总是正确更新现有的function.json文件。

最新更新