Что означает эта ошибка: указан неверный путь BLOB-объекта: ''. Идентификаторы BLOB-объектов должны быть в формате «контейнер / блоб» - PullRequest
0 голосов
/ 25 февраля 2020

Я создаю функцию Azure, используя триггер Blob, и когда я публикую sh эту функцию на портале и запускаю функцию. json, я получаю эту ошибку, что это значит? Я не могу понять эту ошибку:

[Информация] Выполнение «Function1» (Reason = 'Эта функция была вызвана программно через API хоста.', Id = eb4c27bd-7789-4988-9af8 -83f2751c53d5) [Ошибка] Выполнено 'Function1' (Ошибка, Id = eb4c27bd-7789-4988-9af8-83f2751c53d5) Указан неверный путь к BLOB-объекту: ''. Идентификаторы BLOB-объектов должны быть в формате «контейнер / блоб».

Вот код:

using System;
using System.IO;
using System.Threading.Tasks;
using Microsoft.AspNetCore.Mvc;
using Microsoft.Azure.WebJobs;
using Microsoft.Azure.WebJobs.Extensions.Http;
using Microsoft.AspNetCore.Http;
using Microsoft.Extensions.Logging;
using Newtonsoft.Json;
using Google.Apis.Auth.OAuth2;
using Google.Apis.Upload;
using Google.Apis.YouTube.v3.Data;
using System.Reflection;
using Google.Apis.YouTube.v3;
using Google.Apis.Services;
using System.Threading;

namespace UploadVideoBlob
{
    public static class Function1
    {
        [FunctionName("Function1")]
        public static async Task Run([BlobTrigger("video/{name}")]Stream myBlob, string name, Microsoft.Azure.WebJobs.ExecutionContext context, ILogger log)
        {
            UserCredential credential;
            using (var stream = new FileStream(System.IO.Path.Combine(context.FunctionDirectory, "client_secrets.json"), FileMode.Open, FileAccess.Read))
            {
                credential = await GoogleWebAuthorizationBroker.AuthorizeAsync(
                    GoogleClientSecrets.Load(stream).Secrets,
                    new[] { YouTubeService.Scope.YoutubeUpload },
                    "user",
                    CancellationToken.None
                );
            }

            var youtubeService = new YouTubeService(new BaseClientService.Initializer()
            {
                HttpClientInitializer = credential,
                ApplicationName = Assembly.GetExecutingAssembly().GetName().Name
            });

            var video = new Video();
            video.Snippet = new VideoSnippet();
            video.Snippet.Title = "Default Video Title";
            video.Snippet.Description = "Default Video Description";
            video.Snippet.Tags = new string[] { "tag1", "tag2" };
            video.Snippet.CategoryId = "22";
            video.Status = new VideoStatus();
            video.Status.PrivacyStatus = "unlisted";
            var VideoInsertRequest = youtubeService.Videos.Insert(video, "snippet,status", myBlob, "video/*");
            await VideoInsertRequest.UploadAsync();
        }
    }
}

Вот функция. json:

{
  "generatedBy": "Microsoft.NET.Sdk.Functions-1.0.29",
  "configurationSource": "attributes",
  "bindings": [
    {
      "type": "blobTrigger",
      "path": "video/{name}",
      "name": "myBlob"
    }
  ],
  "disabled": false,
  "scriptFile": "../bin/UploadVideoBlob.dll",
  "entryPoint": "UploadVideoBlob.Function1.Run"
}

1 Ответ

0 голосов
/ 25 февраля 2020

Обновление:

Воспроизведите ошибку:

enter image description here

Я нахожу вашу функцию. json нет строки подключения. Ваш атрибут триггера должен быть таким:

[BlobTrigger("video/{name}", Connection = "str")]

И это ваша функция. json на портале должно выглядеть так:

enter image description here

И у вас должны быть настройки приложения в этом месте:

enter image description here

enter image description here

ключом настройки является str, и значение параметра находится здесь:

enter image description here

Go для вашей учетной записи хранения, соединительная строка это значение.

Тогда все работает нормально, например:

enter image description here

Это мои local.settings. json in VS:

{
    "IsEncrypted": false,
  "Values": {
    "AzureWebJobsStorage": "DefaultEndpointsProtocol=xxxxxxcore.windows.net",
    "FUNCTIONS_WORKER_RUNTIME": "dotnet",
    "str": "DefaultEndpointsProtocol=xxxxxxcore.windows.net"
  }
}

(Скопируйте значение из вашей учетной записи хранения)

Оригинальный ответ:

при публикации sh Эта функция для портала и запустить функцию. json.

Вне курса. В результате вашей операции возникла ошибка: вы не добавили настоящий контейнер в контейнер. Триггер BLOB-объекта не похож на httptrigger на портале. На самом деле httptrigger на портале создаст запрос, но blobtrigger на портале не создаст для вас блоб. Вам нужно добавить настоящий блоб в контейнер видео.

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