Библиотека классов .NET в качестве приложения-функции Azure с триггером ServiceBusTopic не работает

Я создал приложение-функцию Azure локально в Visual Studio 2017 (не на портале Azure), выполнив действия по следующему URL-адресу.

https://blogs.msdn.microsoft.com/appserviceteam/2017/03/16/publishing-a-net-class-library-as-a-function-app

Я точно выполнил эти шаги, чтобы создать функцию с «ServiceBusTopicTrigger». Я добавил в свой function.json следующее

{
    “disabled”: false,
    “bindings”: [
        {
            “name”: “mySbMsg”,
            “type”: “serviceBusTrigger”,
            “direction”: “in”,
            “topicName”: “negotiatedaddcharge_test”,
            “subscriptionName”: “clientdispatches”,
            “connection”: “servicebusnac”,
            “accessRights”: “manage”
        }
    ]
}

В моем appsenttings.json есть следующие

{
    “IsEncrypted”: true,
    “Values”: {
        “servicebusnac”: “Endpoint=MyCompanyEndPointPlaceHolder”
    }
}

Когда я запускаю функцию в Visual Studio, я продолжаю получать сообщение об ошибке «Microsoft.Azure.WebJobs.ServiceBus: Microsoft Azure WebJobs SDK ServiceBus строка подключения« AzureWebJobsservicebusnac »отсутствует или пуста».

Просто ради этого я добавил еще одну запись в коллекцию значений с именем «AzureWebJobsservicebusnac», но все равно отображается то же сообщение. Что-то я делаю не так?

Также как вы тестируете эту функцию? Я не могу получить доступ к какой-либо функции в файле csx в моем проекте модульного тестирования.

Спасибо.

Отредактировано: я добавил информацию, чтобы было ясно, что я создаю функцию в Visual Studio, а не на портале Azure.


person Sunil    schedule 04.05.2017    source источник
comment
Изменить: функция отлично работает на портале. Проблема, с которой я сталкиваюсь, заключается в том, что я пытаюсь запустить ее локально в Visual Studio на основе информации в сообщении в блоге.   -  person Sunil    schedule 08.05.2017
comment
Пожалуйста, отредактируйте фактический вопрос, указав приведенные выше критические детали, а не добавляя комментарий. Я думаю, вы обнаружите, что ответы на ваш вопрос будут более точно касаться вашей конкретной проблемы.   -  person JTW    schedule 14.05.2017


Ответы (2)


Решение простое; Я сам столкнулся с этим, и на какое-то время это меня полностью поставило в тупик.

В вашем appsettings.json измените "IsEncrypted" с true на false. Это должно решить возникшую проблему.

Сообщения об ошибках не подходят для этого сценария; у команды Функций Azure уже есть исправление для этого.

Надеюсь, это поможет любому, кто столкнется с этой проблемой. (Клянусь, прошла неделя, прежде чем я понял это, и не без помощи.)

person jedd.ahyoung    schedule 23.05.2017
comment
Вот и все. Спасибо. - person Sunil; 28.05.2017

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

  1. Перейдите в свое приложение-функцию.
  2. Выберите вкладку Platform features над редактором.
  3. Щелкните Application settings.
  4. В разделе App settings добавьте запись с именем и строкой подключения.

Файл appsettings.json используется только для поддержки локальной разработки, а определенные в нем настройки не публикуются в Azure.

person Mikhail Shilkov    schedule 04.05.2017
comment
Извините, я должен быть более конкретным. У меня нет проблем с запуском лазурной функции на портале. Я пытаюсь запустить его локально на своем компьютере с помощью Visual Studio на основе информации, представленной в сообщении блога (я предоставил ссылку в своем вопросе). Вот где происходит сбой. Функция не может найти строку подключения темы служебной шины, хотя я определил ее в своем файле appsettings.json. - person Sunil; 08.05.2017
comment
@Sunil, пожалуйста, обновите свой вопрос, чтобы прояснить вашу проблему; Из прочтения вопроса неясно, что вы конкретно имеете в виду локальный запуск функции. - person JTW; 14.05.2017