Azure Функция чтения и записи в большой двоичный объект с использованием HTTP-триггера - PullRequest
1 голос
/ 10 июля 2020

Позвольте мне в начале сказать, что я ни в коем случае не являюсь разработчиком C#, поэтому прошу прощения за вопросы новичка и последующие ответы.

Я пытаюсь написать функцию Azure, которая когда-то вызывалась с HTTP-триггер, go передаст BLOB-объект, прочитает данные, преобразует данные и затем выполнит запись в другое хранилище BLOB-объектов. Игнорируя уровень трансформации, я просто пытаюсь читать из большого двоичного объекта и загружать его в отдельный большой двоичный объект. Ниже приведен код, который у меня сейчас есть:

#r "Newtonsoft.Json"

using System.Net;
using Microsoft.AspNetCore.Mvc;
using Microsoft.Extensions.Primitives;
using Newtonsoft.Json;
using System.IO;
using System.Collections.Generic;

public static void Run(HttpRequest req, Stream inputBlob, Stream outputBlob, ILogger log)
{
    StreamReader reader = new StreamReader(inputBlob);
    string  text = reader.ReadToEnd();
    await outputBlob.UploadTextAsync(text)
}

Вот мои привязки:

{
  "bindings": [
    {
      "authLevel": "function",
      "name": "req",
      "type": "httpTrigger",
      "direction": "in",
      "methods": [
        "get",
        "post"
      ]
    },
    {
      "name": "$return",
      "type": "http",
      "direction": "out"
    },
    {
      "name": "inputBlob",
      "direction": "in",
      "type": "blob",
      "path": "path/to/file",
      "connection": "*********_STORAGE"
    },
    {
      "name": "outputBlob",
      "direction": "out",
      "type": "blob",
      "path": "path/to/file",
      "connection": "*********_STORAGE"
    }
  ]
}

Когда я тестирую его в пользовательском интерфейсе функции Azure, я получаю статус 500 - Внутренняя ошибка сервера. Если я протестирую его в программе просмотра classi c, Журналы выдадут мне ответ «Этот запрос не авторизован для выполнения этой операции». Я использую Azure UI для разработки как VSCode Azure Function Core Tools, который я не могу настроить на своей машине.

Может ли кто-нибудь дать некоторые данные / указатели относительно того, где я ошибаюсь ? Приветствуются любые фрагменты / примеры кода, но я в значительной степени просмотрел весь StackOverflow и не смог успешно запустить ни один из найденных фрагментов.

1 Ответ

0 голосов
/ 10 июля 2020

Для этой проблемы я тестирую ее на своей стороне с вашим кодом. См. Решение ниже:

1. Не существует метода UploadTextAsync() в Stream outputBlob. Поэтому, пожалуйста, используйте приведенный ниже код, чтобы написать текст от inputBlob до outputBlob.

byte[] bytes = Encoding.ASCII.GetBytes(text);
await outputBlob.WriteAsync(bytes);

Также предоставьте для справки весь мой код функции ниже:

enter image description here

2. Apart from edit your function code, please also check if the binding of your function.json same to mine (the test in path is the container name in storage).

enter image description here

And the storageCon is the name of the value(connection string) which should be added in application settings. We can't hardcode the connection string in function.json.

введите описание изображения здесь

3. Запустите функцию, она прочитает файл inputBlob и запишет его в файл outputBlob.

Надеюсь, это поможет ~

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...