Azure у функции отсутствуют локальные привязки для функции. json - PullRequest
0 голосов
/ 06 августа 2020

Visual Studio 2017 v15.9.25.

Azure function v2.

Вот моя функция запуска:

public static async Task Run(
        [TimerTrigger("0 */2 * * *")]TimerInfo myTimer,
        ILogger log,
        [Blob("BlobContainer/blob.json", FileAccess.ReadWrite, Connection = "AzureWebJobsStorage")] CloudBlockBlob stateStore,
        ExecutionContext context)
    {

Когда я создаю функцию локально в VS , function.json не имеет привязки к хранилищу BLOB-объектов.

Итак, когда я пытаюсь запустить его локально, он выдает следующую ошибку:

 The 'AzureFunctionApp' function is in error: 
Microsoft.Azure.WebJobs.Host: Error indexing method 'AzureFunctionApp'. 
Microsoft.Azure.WebJobs.Host: Can't bind Blob to type 'Microsoft.Azure.Storage.Blob.CloudBlockBlob'.

Это host.json:

{
  "version": "2.0",
  "logging": {
    "applicationInsights": {
      "samplingExcludedTypes": "Request",
      "samplingSettings": {
        "isEnabled": true
      }
    }
  }
}

Вот зависимости:

Зависимости

Я пробовал следующее:

  1. Восстановление Visual Studio.
  2. Добавление удаленной функции Azure в настройки publi sh.
  3. Запуск через func host json, а также отладка в VS17.

Я прочитал еще 6 похожих вопросов, но не нашел решение полезным.

Любезно помогите мне это исправить.

1 Ответ

1 голос
/ 07 августа 2020

По этой проблеме я задавал похожие вопросы. Большинство из них создано в VS2017 и с пакетом WindowsAzure.Storage. Согласно предоставленному вами снимку экрана, я знаю, что вы не устанавливали этот пакет, но я предлагаю вам обновить свою Visual Studio с 2017 по 2019 год, потому что VS2019 больше подходит для нас для разработки функции azure (и, возможно, есть некоторая разница в «Эмуляторе хранилища» между VS2017 и VS2019).

После обновления Visual Studio до 2019 создайте новое приложение-функцию без каких-либо других пакетов в нем. Я заметил, что на вашем снимке экрана есть некоторые другие пакеты, такие как «azure keyvault». Затем скопируйте приведенный выше код в новую функцию и установите пакеты один за другим.

Ниже для справки предоставьте подробную информацию о моей функции. Я создал его в VS2019, и он отлично работает.

Код функции и установленные пакеты:

enter image description here

local.settings.json

{
    "IsEncrypted": false,
    "Values": {
        "AzureWebJobsStorage": "UseDevelopmentStorage=true",
        "FUNCTIONS_WORKER_RUNTIME": "dotnet"
    }
}

csproj

  netcoreapp2.1  v2     СохранитьНовый   PreserveNewest  Never     

Кстати, мой function.json также не содержит привязки к хранилищу BLOB-объектов. Поэтому я думаю, что это не имеет ничего общего с вашей проблемой.

function. json

{
  "generatedBy": "Microsoft.NET.Sdk.Functions-1.0.31",
  "configurationSource": "attributes",
  "bindings": [
    {
      "type": "timerTrigger",
      "schedule": "*/30 * * * * *",
      "useMonitor": true,
      "runOnStartup": false,
      "name": "myTimer"
    }
  ],
  "disabled": false,
  "scriptFile": "../bin/FunctionAppV2.dll",
  "entryPoint": "FunctionAppV2.Function1.Run"
}

================== ============ Обновить ========================

I воспроизвел вашу проблему, это может быть вызвано использованием неправильных пакетов.

Хотя на снимке экрана установленных пакетов нет пакета WindowsAzure.Storage. Но этот пакет не нужно устанавливать, его можно использовать непосредственно в функции.

В моем коде функции, если я using Microsoft.WindowsAzure.Storage.Blob как на скриншоте ниже, он покажет то же сообщение об ошибке, что и ваш . Поэтому, пожалуйста, using Microsoft.Azure.Storage.Blob для CloudBlockBlob.

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

...