Существует несколько способов, которыми вы можете это выполнить. Во-первых, если количество блоков, которые вам нужно вывести, исправлено, вы можете просто использовать множественные выходные привязки.
using System;
public class Input
{
public string Container { get; set; }
public string First { get; set; }
public string Second { get; set; }
}
public static void Run(Input input, out string first, out string second, TraceWriter log)
{
log.Info($"Writing 2 blobs to container {input.Container}");
first = "Azure";
second = "Functions";
}
и соответствующая function.json:
{
"bindings": [
{
"type": "manualTrigger",
"direction": "in",
"name": "input"
},
{
"type": "blob",
"name": "first",
"path": "{Container}/{First}",
"connection": "functionfun_STORAGE",
"direction": "out"
},
{
"type": "blob",
"name": "second",
"path": "{Container}/{Second}",
"connection": "functionfun_STORAGE",
"direction": "out"
}
]
}
Чтобы проверить выше, я послать полезную нагрузку тест JSON к функции, и капли генерируются:
{
Container: "test",
First: "test1",
Second: "test2"
}
выше пример демонстрирует, как значения контейнера/имени blob могут быть привязаны от входа (с помощью выражений пути). Вам просто нужно определить POCO для захвата значений, к которым вы хотите привязать. Я использовал ManualTrigger здесь для простоты, но это работает и для других типов триггеров. Кроме того, в то время как я решил связать с out string
типов, вы можете привязать к какой-либо из других поддерживаемых типов: TextWriter
, Stream
, CloudBlockBlob
и т.д.
Если количество сгустков вам нужно вывести это переменная, то вы может использовать Binder, чтобы принудительно связывать и писать капли в вашем функциональном коде. См. here для более подробной информации. Чтобы привязываться к нескольким выходам, вы просто выполняете несколько обязательных привязок, используя эту технику.
FYI: наша документация была неправильным, поэтому я зарегистрировал ошибку here получить, что фиксированные :)
Я пытаюсь что императивным шаблон. Получаем ошибку компиляции - см. Ниже. –
// обязательное связывание с хранилищем blobPath = $ "json/{fileNamePart} _ {dateString}"; var attributes = new Атрибут [] { новый BlobAttribute (blobPath), новый StorageAccountAttribute (storageAccount) }; using (var writer = binder.Bind (атрибуты)) { writer.Write (jsonString.ToString()); } –
Ошибка: 2017-02-12T00: 43: 43,243 Функция запускается (Id = 6d48c79d-5af3-4c9a-b4ab-242d186e7c33) 2017-02-12T00: 43: 43,243 Функция ошибки компиляции 2017-02- 12T00: 43: 43.243 (225,73): ошибка CS1026:) ожидается 2017-02-12T00: 43: 43.243 (225,61): ошибка CS1503: Аргумент 2: невозможно преобразовать из 'System.Attribute []' в ' System.Attribute ' 2017-02-12T00: 43: 43.243 (161,13): предупреждение CS0162: обнаружен недостижимый код 2017-02-12T00: 43: 43.243 (191,17): предупреждение CS0162: обнаружен недостижимый код 2017-02-12T00: 43: 43.243 Функция завершена (Failure, Id = 6d48c79d-5af3-4c9a-b4ab-242d186e7c33) –