Триггер Azure blob не срабатывает?

#c# #azure #azure-functions #azure-blob-storage #azure-blob-trigger

#c# #azure #azure-функции #azure-blob-хранилище #azure-blob-триггер

Вопрос:

У меня есть простой триггер хранилища больших двоичных объектов Azure, определенный и развернутый в azure. Я хочу, чтобы он регистрировался при загрузке файла в контейнер для хранения больших двоичных объектов с именем «mycontainer».

В настройках конфигурации я добавил значение для строки подключения моей учетной записи хранилища в параметр с именем «AzureWebJobsStorage».

Чтобы просмотреть журналы, я перехожу к монитору> журналы> Журналы файловой системы. После этого я загружаю два файла в свою учетную запись хранилища больших двоичных объектов, ожидая отображения имени и байтов, но безуспешно. Есть ли дополнительные вещи, которые мне нужно настроить, чтобы он работал? Есть ли другие места, которые я могу проверить, чтобы убедиться, что функция прослушивает контейнер для хранения?

Вот мой триггер Azure function blob.

 using System;
using System.IO;
using Microsoft.Azure.WebJobs;
using Microsoft.Azure.WebJobs.Host;
using Microsoft.Extensions.Logging;

namespace resume
{
    public static class MyApp
    {
        [FunctionName("MyApp")]
        public static void Run([BlobTrigger("mycontainer/{name}", Connection = "AzureWebJobsStorage")]Stream myBlob, string name, ILogger log)
        {
            log.LogInformation($"C# Blob trigger function Processed blobn Name: {name} n Size: {myBlob.Length} Bytes");
        }
    }
}

  

Я также замечаю, что я получаю исключения в текущих показателях, которые выдают следующую ошибку:

 Microsoft.WindowsAzure.Storage.StorageException: No such host is known.
 ---> System.Net.Http.HttpRequestException: No such host is known.
 ---> System.Net.Sockets.SocketException (11001): No such host is known.
   at System.Net.Http.ConnectHelper.ConnectAsync(String host, Int32 port, CancellationToken cancellationToken)
   --- End of inner exception stack trace ---
   at System.Net.Http.ConnectHelper.ConnectAsync(String host, Int32 port, CancellationToken cancellationToken)
   at System.Net.Http.HttpConnectionPool.ConnectAsync(HttpRequestMessage request, Boolean allowHttp2, CancellationToken cancellationToken)
   at System.Net.Http.HttpConnectionPool.CreateHttp11ConnectionAsync(HttpRequestMessage request, CancellationToken cancellationToken)
   at System.Net.Http.HttpConnectionPool.GetHttpConnectionAsync(HttpRequestMessage request, CancellationToken cancellationToken)
   at System.Net.Http.HttpConnectionPool.SendWithRetryAsync(HttpRequestMessage request, Boolean doRequestAuth, CancellationToken cancellationToken)
   at System.Net.Http.RedirectHandler.SendAsync(HttpRequestMessage request, CancellationToken cancellationToken)
   at System.Net.Http.DiagnosticsHandler.SendAsync(HttpRequestMessage request, CancellationToken cancellationToken)
   at System.Net.Http.HttpClient.FinishSendAsyncUnbuffered(Task`1 sendTask, HttpRequestMessage request, CancellationTokenSource cts, Boolean disposeCts)
   at Microsoft.WindowsAzure.Storage.Core.Executor.Executor.ExecuteAsyncInternal[T](RESTCommand`1 cmd, IRetryPolicy policy, OperationContext operationContext, CancellationToken token)
   --- End of inner exception stack trace ---
   at Microsoft.WindowsAzure.Storage.Core.Executor.Executor.ExecuteAsyncInternal[T](RESTCommand`1 cmd, IRetryPolicy policy, OperationContext operationContext, CancellationToken token)
   at Microsoft.Azure.WebJobs.Host.Queues.Listeners.QueueListener.ExecuteAsync(CancellationToken cancellationToken) in C:projectsazure-webjobs-sdk-rqm4tsrcMicrosoft.Azure.WebJobs.Extensions.StorageQueuesListenersQueueListener.cs:line 183
   at Microsoft.Azure.WebJobs.Host.Timers.TaskSeriesTimer.RunAsync(CancellationToken cancellationToken) in C:projectsazure-webjobs-sdk-rqm4tsrcMicrosoft.Azure.WebJobs.HostTimersTaskSeriesTimer.cs:line 147

  

Ответ №1:

Я считаю, что это может быть вызвано несколькими причинами:

  1. Дважды проверьте строку подключения к хранилищу и убедитесь, что она действительна (и полная).
  2. Убедитесь, что учетная запись хранилища, на которую вы указываете, НЕ относится к типу «BlobStorage» (используйте General Purpose (V2). Я слышал, что учетные записи хранения не общего назначения не работают для триггеров.

Если это не одна из этих проблем, какую версию функций вы используете?

Комментарии:

1. Это был тип BlobStorage. Я обновился, и теперь он работает, спасибо!!