Błąd podczas próby opublikowania funkcji lazurowej w programie Visual Studio

13

Podczas próby opublikowania mojej funkcji za pomocą programu Visual Studio pojawia się następujący komunikat o błędzie. Masz pomysł, jak to naprawić?

System.AggregateException: Wystąpił jeden lub więcej błędów. ---> System.Exception: Publish napotkał błąd. Nie udało się ustalić przyczyny błędu. Sprawdź dziennik wyjściowy, aby uzyskać więcej informacji. --- Koniec śledzenia stosu wyjątków wewnętrznych --- w System.Threading.Tasks.Task.ThrowIfExceptional (Boolean includeTaskCanceledExceptions) w System.Threading.Tasks.Task.Wait (Int32 millisecondsTimeout, CancellationToken cancellationToken) w Microsoft.Publish.Framework. Model.DefaultPublishSteps. <> C__DisplayClass26_0.b__2 () w System.Threading.Tasks.Task`1.InnerInvoke () w System.Threading.Tasks.Task.Execute () --- Śledzenie końca stosu z poprzedniej lokalizacji, w której wystąpił wyjątek wyrzucony --- w System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess (zadanie zadania) w System.Runtime.CompilerServices. TaskAwaiter.HandleNonSuccessAndDebuggerNotification (Zadanie zadania) w Microsoft.Publish.Framework.Model.DefaultPublishSteps.d__23.MoveNext () --- Śledzenie końca stosu z poprzedniej lokalizacji, w której zgłoszony został wyjątek --- w System.Runtime.CompilerServices.TaskAwaiter.Throwcess (Zadanie zadania) w System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification (Zadanie zadania) w Microsoft.Publish.Framework.ViewModel.ProfileSelectorViewModel.d__213.MoveNext () ---> (Inner Exception # 0) System.Exception: Publishing napotkał błąd. Nie udało się ustalić przyczyny błędu. Sprawdź dziennik wyjściowy, aby uzyskać więcej informacji. <--- MoveNext () --- Śledzenie końca stosu z poprzedniej lokalizacji, w której zgłoszono wyjątek --- w System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess (Zadanie zadania) w System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification (Zadanie zadania) w Microsoft .Publish.Framework.ViewModel.ProfileSelectorViewModel.d__213.MoveNext () ---> (Wewnętrzny wyjątek # 0) System.Exception: Publish napotkał błąd. Nie udało się ustalić przyczyny błędu. Sprawdź dziennik wyjściowy, aby uzyskać więcej informacji. <--- MoveNext () --- Śledzenie końca stosu z poprzedniej lokalizacji, w której zgłoszono wyjątek --- w System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess (Zadanie zadania) w System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification (Zadanie zadania) w Microsoft .Publish.Framework.ViewModel.ProfileSelectorViewModel.d__213.MoveNext () ---> (Wewnętrzny wyjątek # 0) System.Exception: Publish napotkał błąd. Nie udało się ustalić przyczyny błędu. Sprawdź dziennik wyjściowy, aby uzyskać więcej informacji. <--- d__213.MoveNext () ---> (Wewnętrzny wyjątek # 0) System.Exception: Publish napotkał błąd. Nie udało się ustalić przyczyny błędu. Sprawdź dziennik wyjściowy, aby uzyskać więcej informacji. <--- d__213.MoveNext () ---> (Wewnętrzny wyjątek # 0) System.Exception: Publish napotkał błąd. Nie udało się ustalić przyczyny błędu. Sprawdź dziennik wyjściowy, aby uzyskać więcej informacji. <---

System.Exception: Publish napotkał błąd. Nie udało się ustalić przyczyny błędu. Sprawdź dziennik wyjściowy, aby uzyskać więcej informacji.

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

Recusiwe
źródło
W tej chwili mam podobny problem w Visual Studio 2019 - choć w moim przypadku próbuję opublikować w folderze. Wciąż próbuję wyśledzić, co jest przyczyną, ale próbowałem do tej pory w moim przypadku: 1.) Wyczyść pamięć podręczną NuGet, 2.) Usuń foldery bin i obj 3.) Utworzono nowy profil folderu Również, co widzisz w wyjściowym pliku dziennika? Coś przydatnego?
VirtualValentin,
Czy próbowałeś wdrożyć go za pośrednictwem Git przezDeployment Center
pavle

Odpowiedzi:

8

Możesz spróbować this

Usuń ustawienie WEBSITE_RUN_FROM_PACKAGE całkowicie z ustawień aplikacji Azure Functions z portalu Azure.

Sajeetharan
źródło
2
Zrobiłem to bez powodzenia.
Recusiwe,
To zadziałało dla mnie. Nie jestem pewien, czy ma to związek z „restartowaniem” funkcji platformy Azure po wprowadzeniu zmian środowiska, czy też jest to konfiguracja blokująca.
Justin Neff
5

Jest to problem z przekroczeniem limitu czasu w programie Visual Studio, co oznacza, że ​​kod i niektóre inne ustawienia nie są kluczem do problemu. Ten błąd występuje, ponieważ Visual ustawia limit czasu dla wydania. (Plik jest zbyt duży lub prędkość Internetu jest niestabilna)

Jeśli projekt wdrożenia nie jest zbyt duży, możesz poczekać, aż prędkość sieci ustabilizuje się, zanim spróbujesz go uruchomić. Oczywiście możesz również wypróbować inne metody wdrażania, aby uniknąć tego problemu, takie jak wdrożenie zip .

BowmanZhu
źródło
Udało mi się wdrożyć go za pomocą zipdeploy. Jednak gdy sprawdzam zawartość aplikacji, jest ona aktualizowana, ale kiedy uruchamiam funkcję, wydaje się, że działa w starej wersji?
Recusiwe,
@Recusiwe Co oznacza „uruchom starą wersję”? Czy masz na myśli zmianę wersji funkcji lazurowej? Czy wdrożenie zip rozwiązało ten problem?
BowmanZhu,
Przez „starą wersję” mam na myśli ostatnią wersję, którą mogłem opublikować z VS, a nie wersję z zipem. Treść aplikacji zawiera kod z wdrożonego pliku zip, ale go nie uruchamia. Działa stara wersja.
Recusiwe,
@Recusiwe Z jakiej wersji funkcji korzystasz teraz? Którego IDE używasz teraz? A co za montaż twojego projektu? ( .csprojPlik) Wcześniej spotkałem się z podobnym błędem, tym razem wydaje się, że to problem. Czasami ten błąd występuje tylko w programie Visual Studio 2019. Możesz spróbować użyć programu Visual Studio 2017, aby sprawdzić, czy wyjątek nadal występuje. Jeśli korzystasz z programu Visual Studio 2017, czy używasz Resharper? Próbuję odtworzyć błąd i napotkać podobny błąd, ale nie jestem pewien, czy ma to związek z twoją sytuacją.
BowmanZhu,
Funkcja aplikacji v. 2 i Visual Studio 16.4.1
Recusiwe
0

Bez dzielenia twojego projektu na formularzu takim jak GitHub, naprawdę ciężko jest nam zaoferować konkretne porady, jest tak wiele zmiennych, tak wiele kombinacji pakietów NuGET i referencji, że twój projekt może mieć ten konflikt w sposób, który spowoduje to błąd.

Zwłaszcza w przypadku Funkcji v2 wiele razy spotkałem się z tym problemem lub podobnymi. Jednym z największych czynników związanych z funkcjami są konkurujące koncepcje między wersjami v1 i v2.

Gdy używasz kreatora publikowania Visual Studio do utworzenia zasobu docelowego na platformie Azure, zwykle odnosi on większy sukces, jeśli masz z tym problem przez jakiś czas, sugeruję postępować zgodnie z tym procesem, jako dowód koncepcji, jeśli nic więcej:

Ta rada działa równie dobrze w VS2017 i 2019

  1. Utwórz nowy projekt funkcji w studiu wizualnym w tym samym rozwiązaniu.
    • Replikuj nazwę oryginalnej funkcji
  2. Opublikuj funkcję w NOWYM zasobie platformy Azure, użyj kreatora publikowania, aby utworzyć ten zasób.
  3. Jeśli publikacja się powiedzie:
    • Przenieś swój oryginalny kod projektu do nowego projektu
    • Zwróć szczególną uwagę na wersje pakietów nuget, które chcesz przedstawić, one i ich zależności będą musiały być zgodne z wersją v2
  4. Jeśli publikacja NIE powiedzie się
    • Zaktualizuj program Visual Studio do najnowszej wersji
    • Upewnij się, że narzędzia Azure zostały również zaktualizowane do najnowszej wersji

Zasadniczo ogólny sukces w usłudze Azure Functions:

  1. Użyj v1 dla projektów .Net Framework lub jeśli ŻADNY z twoich projektów referencyjnych lub pakietów NuGET ma zależności .Net Fx. (tak więc .Net 4 + ... lub cokolwiek, co nie jest .Net Core .)

    Nawet jeśli te zależności są ukierunkowane na wiele projektów, w przypadku Funkcji wdrożenie zwykle kończy się niepowodzeniem, ponieważ nie jest w stanie prawidłowo wykryć właściwej platformy podczas oceny zależności NuGET podczas wdrażania.

  2. Używaj v2 TYLKO dla projektów .Net Core , upewnij się, że twoje referencje są również tylko .Net Core

Skompiluj i opublikuj swój kod przyrostowo, użyj także AzureDevOps lub GitHub lub innych repozytoriów kodu źródłowego, aby często zameldować swój kod za pomocą Funkcji. Na wczesnych etapach projektu Functions często wprowadzamy wiele poprawek i pakiety NuGET i wydaje się, że działają one lokalnie, ale nie podczas wdrażania.

  • użycie repozytorium kodu źródłowego ułatwia zatwierdzanie zmian przed instalacją nowych pakietów i wycofywanie, jeśli instalacja pakietu powoduje niemożliwy do wdrożenia kod.
  • Wygląda na niechlujny, ale ze względu na wersjonowanie NuGet, powrót do stanu przed instalacją pakietu, nie zakłada się go jako odinstalowanie tego pakietu, może bardzo łatwo uaktualnić inne pakiety, aw tym zmieniającym się środowisku platformy Azure wielu autorów pakietów zdecydowało się uaktualnić swoje zasoby między platformą .Net Framework i .Net Core i nie zawsze dobrze to zrobili, a czasem zachowują niektóre elementy .NET Framework, które spowodują konflikty w funkcjach platformy Azure.

Istnieje kilka interesujących dyskusji, które mogą pomóc:

Chris Schaller
źródło
0

Rozwiązaniem była aktualizacja do najnowszego zestawu SDK.

Recusiwe
źródło
To nie działało dla mnie.
Justin Neff