почему капля создается как пустая? - PullRequest
0 голосов
/ 29 марта 2019

Почему мой BLOB-объект создается без содержимого?

У меня есть выходной привязки для создания BLOB-объектов в следующем:

public static class OnSchedulingToMMMQueueTriggered
{
    [FunctionName("OnSchedulingToMMMQueueTriggered")]
    public static void Run(
        [QueueTrigger("httpqueue", Connection = "OnSchedulingToMMMQueueTriggered:SourceQueueConnection")] MyPayload myQueueItem,
        [Blob("processed/{Payload}", FileAccess.Write, Connection = "OnSchedulingToMMMQueueTriggered:ProcessedPayloadsConnectionString")] Stream processedPayload,
        ILogger log)
    {
        log.LogInformation($"C# Queue trigger function processed: {myQueueItem.Payload}");
        processedPayload = StreamGenerator.GenerateStreamFromString(myQueueItem.Payload);
    }
}

Создает BLOB-объект и присваивает ему правильное имя с помощью processed/{Payload}; однако, когда я проверяю, что внутри блоба, он пуст!

Я предполагаю, что это не работает:

        processedPayload = StreamGenerator.GenerateStreamFromString(myQueueItem.Payload);

Вот пример, которым я следую, из здесь :

[FunctionName("ResizeImage")]
    public static void Run(
    [BlobTrigger("sample-images/{name}")] Stream image,
    [Blob("sample-images-sm/{name}", FileAccess.Write)] Stream imageSmall, //output blob
    [Blob("sample-images-md/{name}", FileAccess.Write)] Stream imageMedium)
    {
         //your code here
    }

Почему BLOB-объект создается как пустой?

Вот моя реализация StreamGenerator:

public static class StreamGenerator
{
    public static Stream GenerateStreamFromString(string s)
    {
        var stream = new MemoryStream();
        var writer = new StreamWriter(stream);
        writer.Write(s);
        writer.Flush();
        stream.Position = 0;
        return stream;
    }
}

1 Ответ

1 голос
/ 30 марта 2019

кажется, ваш код назначает сгенерированный поток локальному var processedPayload

Возможно, вы захотите

StreamGenerator.GenerateStreamFromString(myQueueItem.Payload).CopyTo(processedPayload)
...