API функций Azure не могут быть найдены после CI / CD - PullRequest
0 голосов
/ 14 мая 2019

Тем не менее, учащийся в функциях Azure, испытывающий проблему, кажется мне странным.

Я (вручную) опубликовал (в режиме отладки) приложение-функцию Azure с уровнем анонимной проверки подлинности из Visual Studio 2017. Это только простая операция CRUD с использованием ядра Entity Framework.Версия Azure Function во время выполнения - 2. Это работало просто отлично, тестируя Postman.И вот только подпись одной из функций (все они имеют один и тот же маршрут, но с разными HTTP-глаголами в соответствии с операцией CRUD)

[FunctionName("DeleteProductFunction")]
    public static async Task<HttpResponseMessage> Run(
        [HttpTrigger(AuthorizationLevel.Anonymous, "delete", Route = "product")] HttpRequest req,
        ILogger log)

Проблема:

Все началось после установки конвейеров CI / CD с помощью DevOps Azure.Весь конвейер проходит успешно, и он действительно публикует новую версию в функции Azure.После этого, возвращаясь к Почтальону для тестирования, я получаю 404 для всех моих API (CRUD).

Что я сделал:

  • Я попытался удалить существующий профиль публикации и создать новый с нуля, используя Visual Studio 2017.
  • Кроме того, для этого создан новый конвейер выпуска.
  • Я посмотрел на функцию из редактора службы приложений (превью), чтобы увидеть, действительно ли все там наверху
  • Я протестировал приложение локально, и оно просто отлично работает

Что я здесь испортил?Я понятия не имею!

Любые мнения, обмен опытом или помощь по этому вопросу высоко ценится.

1 Ответ

0 голосов
/ 14 мая 2019

Хорошо .. Я нашел решение.По сути, я раскрыл это в своем вопросе, не заметив этого :)

Я перепутал определение Build: у меня есть Build, Archive и Publish Artifact в качестве задач в моем определении Build.Первый выводит опубликованные файлы в папку «output_publish».Следующая задача, Архив, по умолчанию также установлена ​​в этой папке для «Корневая папка или файл в архив».У меня была ошибка, что «указанный путь не может быть найден».Чтобы (только) избежать этой ошибки, я (небрежно) выбрал основную папку моего проекта вместо «publish_output».Это было проблематично!Зачем?потому что, когда все доходило до Azure, «function.json» искал «dll» по этому пути «scriptFile»: «../bin/MyFunctionApp.dll», хотя этот путь был недопустимым.

Как я это исправил?

В своем определении сборки я добавил «publish_output» сразу после главной папки моего проекта, то есть «project_folder / publish_output».Затем вышеуказанный путь к DLL был разрешен, и теперь моя функция работает правильно.

Надеюсь, что это может быть полезным для других, может быть ..

...