web-dev-qa-db-fra.com

Asp.Net Core 2.0 sur Azure génère un résultat 502.5

J'ai une petite application Web développée avec Asp.Net Core 1.1 déployée sur Azure et cela fonctionne bien. Je viens de migrer le projet pour utiliser Asp.Net Core 2.0 et j'ai essayé de le déployer sur Azure. Le déploiement s'est bien passé, mais lorsque j'ouvre le site, j'obtiens une erreur 502.5. Lorsque je vérifie mon flux de journal Azure, le message d'erreur suivant s'affiche:

Cette erreur se produit lorsqu'une application CGI ne renvoie pas un ensemble valide d'en-têtes HTTP ou lorsqu'un proxy ou une passerelle n'a pas pu envoyer la demande à une passerelle parent. Vous devrez peut-être obtenir une trace du réseau ou contacter l'administrateur du serveur proxy, s'il ne s'agit pas d'un problème CGI.

Inutile de dire que cela fonctionne bien sur ma machine de développement avec le même code. Notez que j'utilise également Entity Framework Core 2.0 bien que j'aie désactivé la création de la base de données sur Azure (pour vérifier si ce n'était pas la cause).

Pour information, j'ai migré de la version 1.1 à la version 2.0 en modifiant les paramètres de l'infrastructure cible en "netcoreapp2.0" et en utilisant le package NuGet "Microsoft.AspNetCore.All". Juste pour être sûr, j'ai également supprimé mon profil de publication et en ai recréé un.

Est-il possible que Asp.Net Core 2.0 ne soit pas encore disponible sur Azure? Asp.Net Core étant assez nouveau pour moi, je ne sais pas quand de nouvelles versions seront disponibles sur Azure.

EDIT

Lorsque j'essaie d'exécuter mon application avec la CLI de point net via la console de débogage proposée par natemcmaster, le problème suivant s'est présenté:

Exception non gérée: System.IO.FileLoadException: impossible de charger le fichier ou l'assembly 'Microsoft.AspNetCore.Hosting.Abstractions, version = 2.0.0.0, Culture = neutre, PublicKeyToken = adb9793829ddae60'. La définition du manifeste de l'Assemblée localisée ne correspond pas à la référence de l'Assemblée. (Exception de HRESULT: 0x80131040)

J'ai téléchargé la DLL sur mon bureau et j'ai vérifié la version avec Dot Net Peak et, en fait, la DLL est 1.1.2, bien que j'ai créé le projet avec Visual Studio et publiez-le directement, est-ce donc un problème avec Visual Studio ou Nuget?

32
ssougnez

le problème venait en fait du fait que, au début, mon application Web utilisait .net core 1.1, qui déploie tous les DLL dans le dossier "wwwroot" de l'application Web. Cependant, avec asp.net core 2.0, il ne le fait plus car les DLL DLL sont récupérées dans un magasin global. Cependant, comme Visual Studio ne nettoie pas le dossier de destination avant la publication, je termine Dans une situation où les 1.1 DLL se trouvaient dans mon wwwroot, le site Web les récupérait à la place de ceux 2.0 du dossier de stockage.

Ceci est expliqué plus en détail ici: https://github.com/Azure/app-service-announcements-discussions/issues/2#issuecomment-31381655

20
ssougnez

D'autres ont expliqué la raison pour laquelle cela se produit. J'aimerais proposer une autre solution - sans doute plus facile - au problème.

Modifiez simplement les paramètres pour supprimer les fichiers déjà sur Azure - voir ci-dessous:

publish project settings

publish project settings option

16
Sam

Recherchez des fichiers journaux sur le portail ou en accédant à distance à D:\home\LogFiles.

Parfois, les journaux n'indiquent pas ce qui ne va pas. Un autre bon moyen d’examiner plus avant consiste à essayer de lancer votre application ASP.NET Core à partir de la console de débogage. S'il vous manque une version d'infrastructure partagée ou s'il y a une autre erreur de démarrage, celle-ci sera plus visible à partir de la console de débogage.

Aller à

https://(your web site name here).scm.azurewebsites.net/DebugConsole/

Votre site sera dans D:\home\site\wwwroot. Vous pouvez le lancer en exécutant:

cd D:\home\site\wwwroot
dotnet MyWebApp.dll

Si votre application ne parvient toujours pas à démarrer, assurez-vous que D:\home\site\wwwroot\web.config est disponible et configuré pour utiliser ASP.NET Core Module. https://docs.Microsoft.com/en-us/aspnet/core/hosting/aspnet-core-module

6
natemcmaster

Dans mon cas, cela a été causé par la présence d'un espace dans le nom du projet.

  • Je peux facilement ajouter un espace, publier => 502.5.
  • Supprimer de l'espace, publier => bon aller.

Difficile à croire mais je le duplique facilement avec ci-dessus.

Toujours en utilisant "Supprimer les fichiers supplémentaires à la destination" par @ Sam's Answer

2
ttugates

Dans mon cas, le problème était dû au fait qu'AppService, à ce moment-là, supportait la version 2.0.0-preview2-006497, mais que j'avais la version 2.0.0-preview3-006890 installée sur la version. Alors j'ai ajouté global.json utiliser Preview 2 SDK et cela a ensuite fonctionné

1
Andrii

Voir https://github.com/Azure/app-service-announcements/issues/14 "Le déploiement devrait être terminé d'ici le vendredi 30 juin."

1
Ivan Josipovic

Cela se produit lorsque votre version d'ASP.NET Core ne peut pas être mise en correspondance sur le serveur.

La solution la plus simple consiste à modifier vos paramètres pour déployer l'application en mode autonome. Ainsi, peu importe si Azure peut correspondre à la version de l'infrastructure. En outre, supprimez les fichiers déjà sur Azure pour ne pas avoir de problèmes lors de la mise à niveau, comme expliqué par @ Sam .

enter image description here

0
Cobus Kruger

Je ne sais pas si cela pourrait aider quelqu'un un jour, mais dans mon cas, j'utilisais: -Microsoft.AspNetCore.All 2.0.5

Downdrage à Microsoft.AspNetCore.All 2.0.3 résoudre mon problème

0
Thibault Gandon