Ошибка при попытке опубликовать функцию Azure из Visual Studio

13

Я получаю следующее сообщение об ошибке, когда пытаюсь опубликовать свою функцию с помощью Visual Studio, есть идеи, как это исправить?

System.AggregateException: произошла одна или несколько ошибок. ---> System.Exception: при публикации произошла ошибка. Мы не смогли определить причину ошибки. Проверьте выходной журнал для более подробной информации. --- Конец внутренней трассировки стека исключений --- в System.Threading.Tasks.Task.ThrowIfExceptional (Boolean includeTaskCanceledExceptions) в System.Threading.Tasks.Task.Wait (Int32 миллисекундTimeout, CancellationToken cancellationToken) в Microsoft.Publish.Framework. Model.DefaultPublishSteps. <> C__DisplayClass26_0.b__2 () в System.Threading.Tasks.Task`1.InnerInvoke () в System.Threading.Tasks.Task.Execute () --- Конец трассировки стека из предыдущего расположения, где было исключение Брошенный --- в System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess (Задача) в System.Runtime.CompilerServices. TaskAwaiter.HandleNonSuccessAndDebuggerNotification (Задача задачи) в Microsoft.Publish.Framework.Model.DefaultPublishSteps.d__23.MoveNext () --- Конец трассировки стека из предыдущего местоположения, в котором было сгенерировано исключение --- в System.Runtime.CompilerServices.TThkKuonSiter (Задача задачи) в System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification (Задача) в Microsoft.Publish.Framework.ViewModel.ProfileSelectorViewModel.d__213.MoveNext () ---> (Внутренняя исключительная ситуация: 0). Системная исключительная ситуация # 0. обнаружил ошибку. Мы не смогли определить причину ошибки. Проверьте выходной журнал для более подробной информации. <--- MoveNext () --- Конец трассировки стека от предыдущего местоположения, где было сгенерировано исключение --- в System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess (Задача) в System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification (задача задачи в Microsoft) .Publish.Framework.ViewModel.ProfileSelectorViewModel.d__213.MoveNext () ---> (Внутреннее исключение # 0) System.Exception: при публикации произошла ошибка. Мы не смогли определить причину ошибки. Проверьте выходной журнал для более подробной информации. <--- MoveNext () --- Конец трассировки стека от предыдущего местоположения, где было сгенерировано исключение --- в System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess (Задача) в System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification (задача задачи в Microsoft) .Publish.Framework.ViewModel.ProfileSelectorViewModel.d__213.MoveNext () ---> (Внутреннее исключение # 0) System.Exception: при публикации произошла ошибка. Мы не смогли определить причину ошибки. Проверьте выходной журнал для более подробной информации. <--- d__213.MoveNext () ---> (Внутреннее исключение № 0) System.Exception: при публикации произошла ошибка. Мы не смогли определить причину ошибки. Проверьте выходной журнал для более подробной информации. <--- d__213.MoveNext () ---> (Внутреннее исключение № 0) System.Exception: при публикации произошла ошибка. Мы не смогли определить причину ошибки. Проверьте выходной журнал для более подробной информации. <---

System.Exception: при публикации произошла ошибка. Мы не смогли определить причину ошибки. Проверьте выходной журнал для более подробной информации.

===================

Recusiwe
источник
Я сталкиваюсь с подобной проблемой в настоящее время в Visual Studio 2019 - хотя я пытаюсь опубликовать в папке в моем случае. Я все еще пытаюсь выяснить, что является причиной этого, но я попробовал это до сих пор в моем случае: 1.) Очистить кеш NuGet, 2.) Удалить папки bin и obj 3.) Также создан новый профиль папки, что вы видите в выходном файле журнала? Что-нибудь полезное?
VirtualValentin
Вы пытались развернуть его через Git черезDeployment Center
pavle

Ответы:

8

Ты можешь попробовать this

Полностью удалите настройку WEBSITE_RUN_FROM_PACKAGE из параметров приложения функций Azure на портале Azure.

Sajeetharan
источник
2
Я сделал это без какого-либо успеха.
Recusiwe
Это сработало для меня. Я не уверен, связано ли это с «перезапуском» функции Azure при внесении изменений в среду или если это конфигурация блокировки.
Джастин Нефф
5

Это проблема времени ожидания Visual Studio, что означает, что ваш код и некоторые другие параметры не являются ключом к проблеме. Эта ошибка возникает из-за того, что Visual устанавливает ограничение времени ожидания для выпуска. (Файл слишком большой или скорость интернета нестабильна)

Если ваш проект развертывания не слишком велик, вы можете подождать, пока скорость сети не станет стабильной, прежде чем пытаться его запустить. Конечно, вы также можете попробовать другие способы развертывания, чтобы избежать этой проблемы, такие как zip deploy .

BowmanZhu
источник
Мне удалось развернуть его с помощью zipdeploy. Однако, когда я проверяю содержимое приложения, оно обновляется, но когда я запускаю функцию, кажется, запускается старая версия?
Recusiwe
@Recusiwe Что означает «запустить старую версию»? Вы имеете в виду, что была изменена версия функции Azure? Решил ли zip deploy эту проблему?
БоуманЖу
Под «старой версией» я подразумеваю последнюю версию, которую я смог опубликовать из VS, а не версию с zip-развертыванием. Содержимое приложения содержит код из развернутого почтового индекса, но не запускает его. Это работает старая версия.
Recusiwe
@Recusiwe Какую версию функции вы используете сейчас? Какую IDE вы используете сейчас? А что за сборка вашего проекта? ( .csprojФайл) Я сталкивался с подобной ошибкой раньше, кажется, проблема сборки в то время. Иногда эта ошибка возникает только в Visual Studio 2019. Вы можете попытаться использовать Visual Studio 2017, чтобы проверить, существует ли это исключение. Если вы используете Visual Studio 2017, вы используете Resharper? Я пытаюсь воспроизвести вашу ошибку и встретить похожую ошибку, но я не уверен, что это связано с вашей ситуацией.
BowmanZhu
Приложение функций v. 2 и Visual Studio 16.4.1
Recusiwe
0

Без публикации вашего проекта на игровой форме, такой как GitHub, нам действительно трудно дать конкретный совет, существует так много переменных, так много комбинаций пакетов NuGET и ссылок, что ваш проект может столкнуться с таким конфликтом таким образом, что это приведет к этому. ошибка.

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

Когда вы используете мастер публикации Visual Studio для создания целевого ресурса в Azure, он будет иметь больший успех, если вы некоторое время боролись с этим, я предлагаю вам следовать этому процессу в качестве доказательства концепции, если ничего другого:

Этот совет одинаково хорошо работает в VS2017 и 2019

  1. Создайте новый функциональный проект в Visual Studio, в том же решении.
    • Скопируйте название вашей оригинальной функции
  2. Опубликуйте функцию в НОВОМ ресурсе Azure, используйте мастер публикации для создания этого ресурса.
  3. Если публикация прошла успешно:
    • Переместите исходный код проекта в новый проект
    • Обратите пристальное внимание на версии пакетов nuget, которые вы хотите донести, они и их зависимости должны быть совместимы с v2
  4. Если публикация не удалась
    • Убедитесь, что вы обновили Visual Studio до последней версии
    • Убедитесь, что ваши инструменты Azure также обновлены до последней версии

Как правило, для общего успеха с функциями Azure:

  1. Используйте v1 для проектов .Net Framework, или если ЛЮБОЙ из ваших ссылочных проектов или пакетов NuGET имеет зависимости .Net Fx. (так. .Net 4+ ... или что-то, что не является .Net Core .)

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

  2. Используйте v2 ТОЛЬКО для проектов .Net Core , убедитесь, что ваши ссылки также являются только .Net core

Компилируйте и публикуйте свой код постепенно, также используйте AzureDevOps или GitHub или другие репозитории исходного кода, чтобы часто проверять свой код с помощью функций. На ранних этапах проекта «Функции» мы часто вносим множественные ссылки и пакеты NuGET, и они, кажется, работают локально, а не при развертывании.

  • Использование репозитория исходного кода позволяет легко зафиксировать изменения перед установкой новых пакетов и выполнить откат, если в результате установки пакета получается не развертываемый код.
  • Это кажется грязным, но из-за того, что версионирование NuGet вернулось в состояние перед установкой пакета, это не означает, что он деинсталлируется, возможно, он очень легко обновил другие пакеты, и в этой изменяющейся среде Azure многие авторы пакетов решили обновить свои ресурсы между .Net Framework и .Net Core, и не всегда они делали это хорошо, или иногда сохраняют некоторые элементы .Net Framework, которые вызывают конфликты в функциях Azure.

Есть несколько интересных дискуссий, которые могут помочь:

Крис Шаллер
источник
0

Решение было обновить до новейшего SDK.

Recusiwe
источник
Это не сработало для меня.
Джастин Нефф