Fehler beim Versuch, eine Azure-Funktion in Visual Studio zu veröffentlichen

13

Ich erhalte die folgende Fehlermeldung, wenn ich versuche, meine Funktion mit Visual Studio zu veröffentlichen. Haben Sie eine Idee, wie Sie dies beheben können?

System.AggregateException: Ein oder mehrere Fehler sind aufgetreten. ---> System.Exception: Beim Veröffentlichen ist ein Fehler aufgetreten. Wir konnten die Fehlerursache nicht ermitteln. Überprüfen Sie das Ausgabeprotokoll auf weitere Details. --- Ende der Ablaufverfolgung des inneren Ausnahmestapels --- bei System.Threading.Tasks.Task.ThrowIfExceptional (Boolean includeTaskCanceledExceptions) bei System.Threading.Tasks.Task.Wait (Int32 MillisekundenTimeout, CancellationToken CancellationToken) bei Microsoft.Publish.Framework. Model.DefaultPublishSteps. <> C__DisplayClass26_0.b__2 () bei System.Threading.Tasks.Task`1.InnerInvoke () bei System.Threading.Tasks.Task.Execute () --- Ende der Stapelverfolgung vom vorherigen Speicherort, an dem die Ausnahme war --- bei System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess (Task-Task) bei System.Runtime.CompilerServices ausgelöst. TaskAwaiter.HandleNonSuccessAndDebuggerNotification (Task-Task) bei Microsoft.Publish.Framework.Model.DefaultPublishSteps.d__23.MoveNext () --- Ende des Stack-Trace vom vorherigen Speicherort, an dem die Ausnahme ausgelöst wurde --- bei System.Runtime.CompilerServices.TaskAwaiter.Throw (Task-Task) unter System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification (Task-Task) unter Microsoft.Publish.Framework.ViewModel.ProfileSelectorViewModel.d__213.MoveNext () ---> (Innere Ausnahme # 0) Publish: Exception:) ist auf einen Fehler gestoßen. Wir konnten die Fehlerursache nicht ermitteln. Überprüfen Sie das Ausgabeprotokoll auf weitere Details. <--- MoveNext () --- Ende des Stack-Trace vom vorherigen Speicherort, an dem eine Ausnahme ausgelöst wurde --- bei System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess (Task-Task) bei System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification (Task-Task) bei Microsoft .Publish.Framework.ViewModel.ProfileSelectorViewModel.d__213.MoveNext () ---> (Innere Ausnahme # 0) System.Exception: Beim Veröffentlichen ist ein Fehler aufgetreten. Wir konnten die Fehlerursache nicht ermitteln. Überprüfen Sie das Ausgabeprotokoll auf weitere Details. <--- MoveNext () --- Ende des Stack-Trace vom vorherigen Speicherort, an dem eine Ausnahme ausgelöst wurde --- bei System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess (Task-Task) bei System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification (Task-Task) bei Microsoft .Publish.Framework.ViewModel.ProfileSelectorViewModel.d__213.MoveNext () ---> (Innere Ausnahme # 0) System.Exception: Beim Veröffentlichen ist ein Fehler aufgetreten. Wir konnten die Fehlerursache nicht ermitteln. Überprüfen Sie das Ausgabeprotokoll auf weitere Details. <--- d__213.MoveNext () ---> (Innere Ausnahme # 0) System.Exception: Beim Veröffentlichen ist ein Fehler aufgetreten. Wir konnten die Fehlerursache nicht ermitteln. Überprüfen Sie das Ausgabeprotokoll auf weitere Details. <--- d__213.MoveNext () ---> (Innere Ausnahme # 0) System.Exception: Beim Veröffentlichen ist ein Fehler aufgetreten. Wir konnten die Fehlerursache nicht ermitteln. Überprüfen Sie das Ausgabeprotokoll auf weitere Details. <---

System.Exception: Beim Veröffentlichen ist ein Fehler aufgetreten. Wir konnten die Fehlerursache nicht ermitteln. Überprüfen Sie das Ausgabeprotokoll auf weitere Details.

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

Recusiwe
quelle
In Visual Studio 2019 tritt derzeit ein ähnliches Problem auf - obwohl ich in meinem Fall versuche, es in einem Ordner zu veröffentlichen. Ich versuche immer noch herauszufinden, was dies verursacht, aber ich habe dies bisher in meinem Fall versucht: 1.) Leeren Sie den NuGet-Cache, 2.) Entfernen Sie die Ordner bin und obj. 3.) Erstellen Sie ein neues Ordnerprofil. Was sehen Sie in der Ausgabeprotokolldatei? Etwas Nützliches?
VirtualValentin
Haben Sie versucht, es über Git viaDeployment Center
pavle

Antworten:

8

Kannst du es versuchen this

Entfernen Sie die Einstellung WEBSITE_RUN_FROM_PACKAGE vollständig aus den Anwendungseinstellungen für Azure-Funktionen in Azure Portal.

Sajeetharan
quelle
2
Ich habe das ohne Erfolg gemacht.
Recusiwe
Das hat bei mir funktioniert. Ich bin nicht sicher, ob es damit zusammenhängt, dass die Azure-Funktion neu gestartet wird, wenn Änderungen an der Umgebung vorgenommen werden, oder ob es sich um eine blockierende Konfiguration handelt.
Justin Neff
5

Dies ist ein Problem mit dem Visual Studio-Zeitlimit. Dies bedeutet, dass Ihr Code und einige andere Einstellungen nicht der Schlüssel zum Problem sind. Dieser Fehler tritt auf, weil Visual ein Zeitlimit für die Version festlegt. (Die Datei ist zu groß oder die Internetgeschwindigkeit ist instabil.)

Wenn Ihr Bereitstellungsprojekt nicht zu groß ist, können Sie warten, bis die Netzwerkgeschwindigkeit stabil ist, bevor Sie versuchen, es auszuführen. Natürlich können Sie auch andere Bereitstellungsmethoden ausprobieren, um dieses Problem zu vermeiden, z. B. die Zip-Bereitstellung .

BowmanZhu
quelle
Ich hatte Erfolg bei der Bereitstellung mit zipdeploy. Wenn ich jedoch den App-Inhalt überprüfe, wird er aktualisiert. Wenn ich die Funktion ausführe, scheint die alte Version ausgeführt zu werden.
Recusiwe
@Recusiwe Was bedeutet die "alte Version ausführen"? Meinen Sie damit, dass die Version der Azure-Funktion geändert wurde? Solved Hat zip deploy dieses Problem gelöst?
BowmanZhu
Mit "alter Version" meine ich die letzte Version, die ich von VS aus veröffentlichen konnte, nicht die von Zip bereitgestellte. Der App-Inhalt enthält den Code aus der bereitgestellten Zip-Datei, wird jedoch nicht ausgeführt. Es läuft eine alte Version.
Recusiwe
@Recusiwe Welche Funktionsversion verwenden Sie gerade? Welche IDE verwenden Sie gerade? Und was ist die Montage Ihres Projekts? (Die .csprojDatei) Ich hatte zuvor einen ähnlichen Fehler, es scheint diesmal ein Montageproblem zu sein. Manchmal tritt dieser Fehler nur in Visual Studio 2019 auf. Sie können versuchen, mit Visual Studio 2017 festzustellen, ob diese Ausnahme noch besteht. Wenn Sie Visual Studio 2017 verwenden, verwenden Sie Resharper? Ich versuche, Ihren Fehler zu reproduzieren und einen ähnlichen Fehler zu finden, bin mir jedoch nicht sicher, ob dies mit Ihrer Situation zusammenhängt.
BowmanZhu
Funktions-App v. 2 und Visual Studio 16.4.1
Recusiwe
0

Ohne Ihr Projekt auf einer Spielform wie GitHub zu teilen, ist es für uns sehr schwierig, spezifische Ratschläge zu geben. Es gibt so viele Variablen, so viele Kombinationen von NuGET-Paketen und Referenzen, dass Ihr Projekt diesen Konflikt möglicherweise so hat, dass dies dazu führt Error.

Insbesondere bei v2-Funktionen habe ich dieses oder ähnliche Probleme mehrmals erlebt. Einer der größten Faktoren bei Funktionen sind die konkurrierenden Konzepte zwischen v1 und v2.

Wenn Sie den Visual Studio-Veröffentlichungsassistenten zum Erstellen der Zielressource in Azure verwenden, ist dieser tendenziell erfolgreicher, wenn Sie eine Weile damit zu kämpfen haben. Ich empfehle Ihnen, diesen Prozess als Proof-of-Concept zu befolgen, wenn nichts anderes:

Dieser Rat funktioniert in VS2017 und 2019 gleich gut

  1. Erstellen Sie in derselben Lösung ein neues Funktionsprojekt in Visual Studio.
    • Replizieren Sie den Namen Ihrer ursprünglichen Funktion
  2. Veröffentlichen Sie die Funktion in einer NEUEN Azure-Ressource. Verwenden Sie den Veröffentlichungsassistenten, um diese Ressource zu erstellen.
  3. Wenn die Veröffentlichung erfolgreich ist:
    • Verschieben Sie Ihren ursprünglichen Projektcode in das neue Projekt
    • Achten Sie genau auf die Versionen von Nuget-Paketen, die Sie vermitteln möchten. Sie und ihre Abhängigkeiten müssen v2-kompatibel sein
  4. Wenn die Veröffentlichung NICHT erfolgreich ist
    • Stellen Sie sicher, dass Sie Ihr Visual Studio auf den neuesten Stand bringen
    • Stellen Sie sicher, dass Ihre Azure-Tools auch auf den neuesten Stand gebracht werden

Als allgemeine Faustregel für den allgemeinen Erfolg mit Azure-Funktionen gilt:

  1. Verwenden v1 für Projekte .Net Framework, oder wenn ANY Ihrer Referenzprojekte oder NuGet Pakete haben .Net Fx Abhängigkeiten. (Also .Net 4 + ... oder alles, was nicht .Net Core ist .)

    Selbst wenn diese Abhängigkeiten auf mehrere Projekte abzielen, schlägt die Bereitstellung bei Funktionen häufig fehl, da die richtige Plattform bei der Bewertung der NuGET-Abhängigkeiten während der Bereitstellung nicht richtig erkannt werden kann.

  2. Verwenden Sie v2 NUR für .Net Core- Projekte. Stellen Sie sicher, dass Ihre Referenzen auch nur .Net Core sind

Kompilieren und veröffentlichen Sie Ihren Code inkrementell. Verwenden Sie auch AzureDevOps oder GitHub oder andere Quellcode-Repositorys, um Ihren Code häufig mit Funktionen einzuchecken. In den frühen Phasen eines Funktionsprojekts bringen wir häufig mehrere Aktualisierungen und NuGET-Pakete ein, und sie scheinen lokal zu funktionieren, aber nicht, wenn wir sie bereitstellen.

  • Die Verwendung eines Quellcode-Repos erleichtert das Festschreiben von Änderungen vor der Installation neuer Pakete und das Zurücksetzen, wenn die Installation des Pakets zu einem nicht bereitstellbaren Code führt.
  • Es scheint chaotisch zu sein, aber aufgrund der NuGet-Versionierung, die vor der Installation eines Pakets in den Status zurückkehrt, ist es möglicherweise nicht so einfach, dieses Paket zu deinstallieren. Möglicherweise haben andere Pakete sehr leicht aktualisiert, und in dieser sich ändernden Azure-Umgebung haben sich viele Paketautoren für ein Upgrade entschieden Ressourcen zwischen .Net Framework und .Net Core, und sie haben es nicht immer gut gemacht, oder manchmal behalten sie einige .Net Framework-Elemente bei, die Konflikte in Azure-Funktionen verursachen.

Es gibt einige interessante Diskussionen, die helfen können:

Chris Schaller
quelle
0

Die Lösung bestand darin, auf das neueste SDK zu aktualisieren.

Recusiwe
quelle
Das hat bei mir nicht funktioniert.
Justin Neff