Функция Azure, реализованная локально, не будет работать в облаке

У меня есть следующая функция, которую я определяю локально и могу нормально ее отлаживать.

    [FunctionName("QueueTrigger")]
    public static void DUMMYFUNCTION(
    [QueueTrigger("myqueue", Connection = "AzureWebJobsStorage")]string myQueueItem, TraceWriter log)
    {
        log.Info($"C# function processed: {myQueueItem}");
    }

Локально «AzureWebJobsStorage» определяется в файле local.settings.json для использования учетной записи хранения с «myqueue». В настройках функции в Azure для «AzureWebJobsStorage» также задана правильная строка подключения (такая же, как та, которая установлена ​​локально). Это означает, что у меня нет такой же проблемы, как в Функция Azure не выполняется в Azure (без ошибок)

Теперь я использую Visual Studio Team Service для размещения исходного кода в репозитории git. Я настроил развертывание для использования исходного кода и развертывания содержащихся в нем функций. Я не думаю, что проблема связана с VSTS, потому что развертывание выполнено успешно, и функция отображается в моем списке функций:

Функция очереди на лазурном

После развертывания создается файл function.json со следующим содержимым:

{
  "generatedBy": "Microsoft.NET.Sdk.Functions.Generator-1.0.8",
  "configurationSource": "attributes",
  "bindings": [
  {
     "type": "queueTrigger",
     "connection": "AzureWebJobsStorage",
     "queueName": "myqueue",
     "name": "myQueueItem"
  }],
  "disabled": false,
  "scriptFile": "../bin/myAssembly.dll",
  "entryPoint": "myAssembly.MyClass.DUMMYFUNCTION"
}

Проблема в том, что, когда я добавляю элемент в очередь во время его локальной отладки, функция выполняется, но когда функция работает на лазурном сервере, этого не происходит.

Что мне нужно изменить в коде, чтобы он работал и на лазурном? Я думал, что это сработает «из коробки».


person Th3B0Y    schedule 23.02.2018    source источник
comment
У вас есть AzureWebJobsStorage в настройках приложения? Вы слушаете одну и ту же очередь локально и в Azure?   -  person Mikhail Shilkov    schedule 23.02.2018
comment
Да @mikhail, как описано в вопросе.   -  person Th3B0Y    schedule 23.02.2018
comment
Проверьте очередь на портале Azure. Отображает ли оно сообщение как ожидающее, доставленное или отправленное в очередь недоставленных сообщений?   -  person McGuireV10    schedule 23.02.2018
comment
@ McGuireV10 Они отображаются точно так же в обоих случаях, как ожидающие. Если я запускаю его локально, он обрабатывается, но запуск в лазурном режиме ничего не дает.   -  person Th3B0Y    schedule 23.02.2018


Ответы (1)


Ваша функция вообще работает? Если вы войдете в KUDU, увидите ли вы какой-либо журнал, в котором действительно выполнялась ваша функция?

Если ваша функция вообще не работает, функции Azure 2 (с использованием платформы .NET Standard 2) все еще находятся в предварительной версии (бета). Поэтому, когда вы развертываете свою функцию через, не забудьте зайти в настройки приложения вашего приложения-функции и установить для FUNCTIONS_EXTENSION_VERSION значение beta.

person DOMZE    schedule 23.02.2018
comment
OMG, это работает! Я не понимаю, почему это нелегко найти в документации. Я искал его сейчас, и он описан на странице, посвященной локальной отладке функции (docs.microsoft.com/en-us/azure/azure-functions/). В любом случае, спасибо :) - person Th3B0Y; 23.02.2018
comment
@ Th3B0Y Я не уверен, что понимаю, в чем проблема. Была ли проблема с установкой версии? Я пытаюсь понять, что можно сделать, чтобы улучшить документы / ошибки для таких сценариев. - person ahmelsayed; 27.02.2018
comment
@ahmelsayed, проблема заключалась в FUNCTIONS_EXTENSION_VERSION в конфигурациях лазурного цвета. Я изменил его на бета-версию, и это сработало. - person Th3B0Y; 27.02.2018