Привязка к пользовательским свойствам ввода в предварительно скомпилированных функциях Azure C#

Я пытаюсь использовать пользовательские привязки и шаблоны для создания функции Azure, запускаемой по протоколу HTTP, которая получает файл из хранилища BLOB-объектов. В моем случае запрос HTTP POST будет знать имя вложения. В этой статье документы обсуждают шаблон с использованием сценариев csx, я использую предварительно скомпилированные функции C# Azure в Visual Studio. Я попытался перевести его на следующее, но он вызывает исключение во время выполнения:

Следующие 1 функции находятся в состоянии ошибки: Выполнить: 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-объектов, зная имя файла, полученное из события Triggered?

1 ответ

Решение

Трюк на самом деле поставить 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 файл правильно.

Другие вопросы по тегам