Доступ к функции Azure CloudBlobContainer из HttpTriggerFunction - PullRequest
0 голосов
/ 06 июля 2018

Очень, очень плохо знакомы с функциями Azure и очень разочарованы.

Все, что я хочу сделать, это выполнить запрос get из HttpTriggerFunction и вернуть содержимое потока из CloudBlobContainer.

Я действительно не понимаю, почему это так сложно. Просто пытаюсь разместить SPA с помощью функций Azure.

Как то так

  public static class UIHandler
{
    [FunctionName("UIHandler")]
    public static async Task<HttpResponseMessage> Run(
        [HttpTrigger(AuthorizationLevel.Function, "get", Route = null)]HttpRequest req, 
        TraceWriter log, 
        CloudBlobContainer container)
    {
        log.Info("C# HTTP trigger function processed a request.");
        var stream = await container.GetBlockBlobReference({Infer file name from request here}).OpenReadAsync();

        return new HttpResponseMessage()
        {
            StatusCode = HttpStatusCode.OK,
            Content = new StreamContent(stream)
        };

    }
}

Когда я пытаюсь запустить это, я получаю следующую ошибку.

Выполнить: Microsoft.Azure.WebJobs.Host: метод индексации ошибок 'UIHandler.Run. Microsoft.Azure.WebJobs.Host: Невозможно связать параметр «контейнер» для ввода CloudBlobContainer. Убедитесь, что параметр Type поддерживается привязкой. Если вы используете обязательные расширения (например, ServiceBus, Timers и т. Д.) Убедитесь, что вы позвонили при регистрации метод расширения (й) в вашем коде запуска (например, config.UseServiceBus (), config.UseTimers () и т. д.).

Я использую функции Azure 2. Из Интернета не видно, как настроить для этого расширения просмотра. Iv'e также изучил привязки ввода и вывода. Я не понимаю, что делает ввод или вывод параметров связанными, когда вы используете C #, который, кажется, существует только в JSON.

Нужен ли мне соответствующий файл JSON? Если так, то как это называется, куда оно идет.

Заранее спасибо

1 Ответ

0 голосов
/ 06 июля 2018

Взгляните на Связывание ввода хранилища BLOB-объектов .Самый первый пример показывает, как читать поток больших двоичных объектов, просто замените триггер очереди на триггер HTTP, например,

[FunctionName("UIHandler")]
public static async Task<HttpResponseMessage> Run(
    [HttpTrigger(AuthorizationLevel.Function, "get", Route = "{name}")] HttpRequest req,
    string name, 
    TraceWriter log, 
    [Blob("samples-workitems/{name}", FileAccess.Read)] Stream stream)
{
    log.Info($"C# HTTP trigger function processed a request for {name}.");

    return new HttpResponseMessage()
    {
        StatusCode = HttpStatusCode.OK,
        Content = new StreamContent(stream)
    };

}
...