115 votes

ASP.NET Core 1.0 sur IIS erreur 502.5

Je viens juste de mettre à jour mon serveur (Windows 2012R2) pour .Net Core 1.0 RTM Le pack d'accueil Windows de la version précédente .Net Core 1.0 RC2 . Mon application fonctionne sur mon PC sans aucun problème mais le serveur continue de s'afficher :

HTTP Error 502.5 - Process Failure

Common causes of this issue:

The application process failed to start
The application process started but then stopped
The application process started but failed to listen on the configured port

Il fonctionnait auparavant avec la version RC2. Je ne sais pas ce qui a pu se passer.

C'est tout ce que dit la visionneuse d'événements :

Failed to start process with the commandline 'dotnet .\MyWebApp.dll'. Error code = '0x80004005'.

Le pire, c'est que les journaux d'applications sont vide ! Je veux dire que ces fichiers stdout_xxxxxxxxx.log sont complètement vides et ont tous une taille de 0 octet.

Que dois-je faire ? Comment puis-je connaître la cause d'une erreur qui n'est pas enregistrée ?

0 votes

3 votes

Quel est le rapport ? Le code d'erreur est clairement différent. Sans parler du fait que j'ai dit que cela fonctionnait sur mon propre PC avec IIS.

1 votes

D'abord, j'ai dit éventuellement sont liés, car il est mentionné que Failed to start process with commandline 'dotnet ./bin/Debug/netcoreapp1.0/WebApplication2.dll', Error Code = '0x80004005'. - la même ligne de commande et le même code d'erreur que vous signalez. Deuxièmement, le fait qu'il fonctionne sur votre machine, mais pas sur la machine distante, indique que quelque chose est différent sur le serveur. Si vous pouviez nous expliquer comment l'application est déployée sur le serveur, ce serait utile.

115voto

C Style Points 206

J'ai pu le réparer en exécutant

" C:\Program Fichiers \dotnet\dotnet.exe " " C:\fullpath\PROJECT.dll "

à l'invite de commande, ce qui m'a donné une erreur beaucoup plus significative :

"Le cadre spécifié 'Microsoft.NETCore.App', version '1.0.1' n'a pas été n'a pas été trouvé. - Vérifiez les dépendances de l'application et ciblez une version de framework installée à : C:\Program Fichiers \dotnet\shared\Microsoft.NETCore.App - Les versions suivantes sont installées : 1.0.0 - Vous pouvez également installer la version du framework '1.0.1'.

Comme vous pouvez le constater, je n'avais pas la bonne version de NET Core installée sur mon serveur. J'ai pu exécuter mon application après avoir désinstallé la version précédente 1.0.0 et installé la version correcte 1.0.1.

2 votes

J'ai réussi à l'utiliser pour découvrir que j'avais besoin d'installer NodeJS... car il donne un "message beaucoup plus significatif".

0 votes

Je ne peux pas vous dire combien de temps j'ai perdu avec ça. Merci. Mon erreur concernait un certificat manquant. Pourquoi n'ai-je pas pu obtenir cette erreur par une méthode saine ?

0 votes

Cela a fonctionné pour moi, j'ai pu voir une exception dégagée sur la ligne de commande, ce qui m'a fait avancer. Merci beaucoup.

68voto

Hamid Mosalla Points 2182

J'ai eu le même problème, dans mon cas il s'agissait d'une permission insuffisante de l'identité de l'utilisateur de mon pool d'applications, sur Publication vers IIS Sur la page de la documentation asp.net, plusieurs raisons sont citées pour cette erreur :

  • Si vous avez publié une application autonome, confirmez que vous n'avez pas défini de plate-forme dans le champ buildOptions de project.json qui entre en conflit avec le RID de publication. Par exemple, ne spécifiez pas une plate-forme x86 et publiez avec un RID de win81-x64 ( dotnet publish -c Release -r win81-x64 ). Le projet sera publié sans avertissement ni erreur mais échouera avec les exceptions enregistrées ci-dessus sur le serveur.
  • Vérifiez le processPath de l'attribut <aspNetCore> dans le web.config pour confirmer qu'il est dotnet pour une application portable ou . \my_application.exe pour une application autonome.
  • Pour une application portable, dotnet.exe peut ne pas être accessible via les paramètres PATH. Confirmez que C:\Program Files\dotnet\ existe dans les paramètres du PATH du système.
  • Pour une application portable, dotnet.exe peut ne pas être accessible pour l'identité de l'utilisateur du pool d'applications. Confirmez que l'identité de l'utilisateur du pool d'applications a accès à l'application C:\Program Files\dotnet répertoire.
  • Confirmez que vous avez correctement référencé l'intergiciel IIS Integration en appelant la fonction .UseIISIntegration() de l'application WebHostBuilder() .
  • Si vous utilisez le .UseUrls() lors de l'auto-hébergement avec Kestrel, confirmez qu'il est positionné avant la méthode d'extension .UseIISIntegration() méthode d'extension sur WebHostBuilder() . .UseIISIntegration() doit définir le Url pour le reverse-proxy lors de l'exécution de Kestrel derrière IIS et ne pas avoir sa valeur écrasée par .UseUrls() .

Dans mon cas, c'était la quatrième raison, je l'ai changé en faisant un clic droit sur mon pool d'applications, et dans les paramètres avancés sous Modèle de processus, j'ai défini l'Identité à un utilisateur avec suffisamment de permission : user identity of my Application Pool

1 votes

C'est la réponse que je cherchais ! dans mon cas, il s'agissait aussi du pool de candidatures.....

3 votes

Merci. Dans mon cas, le problème concernait le chemin d'accès à dotnet. J'ai trouvé ces journaux dans l'observateur d'événements du système : Failed to start process with commandline '"dotnet" .\PROJECT.dll', ErrorCode = '0x80070002' .

0 votes

J'ajouterais une autre raison : "Installer incapable d'obtenir VC++ Redistributable" puisque mon serveur n'a pas de connexion internet, il n'a pas pu télécharger ce paquet... Vous devez donc le télécharger manuellement : lien et l'installer.

67voto

michael_hook Points 81

J'ai réussi à le faire fonctionner avec une réinitialisation complète de IIS (je venais juste d'installer le pack d'hébergement).

Il s'avère que le simple fait d'appuyer sur "Restart" dans IIS Manager ne suffit pas. J'ai dû ouvrir une invite de commande et taper 'iisreset'.

0 votes

J'ai également appuyé sur le bouton vert recycle iis au niveau du nœud Root du serveur web dans l'interface utilisateur. Cela a résolu le problème pour moi, combiné avec la configuration de l'utilisateur pour le pool d'applications à LocalSystem

0 votes

Merci Michael... Cela a aussi résolu mon problème. Je cherchais une réponse depuis quelques heures. Merci !

2 votes

Tx ! Votre réponse m'a rappelé ce passage de la documentation de MS : "Redémarrez le système ou exécutez l'arrêt net était /y suivi par net start w3svc à partir d'une invite de commande pour détecter un changement dans le PATH du système". (après avoir installé le pack d'hébergement Windows Server .NET Core)

12voto

Vahid Amiri Points 3997

J'ai donc obtenu un nouveau serveur, cette fois sous Windows 2008R2, et mon application fonctionne bien.

Je ne peux pas dire avec certitude quel était le problème avec l'ancien serveur mais j'ai une idée.

Donc, parce que j'ai précédemment compilé l'application sans plateforme à l'esprit, cela m'a permis de dll qui ne fonctionne que si l'hôte cible a .Net Core Windows Hosting installé. Dans mon cas, c'était installé et c'était bien .

Après que l'application n'ait pas fonctionné, j'ai décidé de la compiler en tant qu'application console avec win7-x64 comme temps d'exécution. Cette fois, au moment où j'ai exécuté le exe de mon application sur le serveur, il a planté avec une erreur sur une dll manquante :

The program can't start because api-ms-win-crt-runtime-l1-1-0.dll is missing

Cette dll est issue de Universal C Runtime qui est incluse dans le programme Redistributeur de Visual C++ pour Visual Studio 2015 .

J'ai essayé d'installer ce paquet (à la fois x64 et x86) mais cela a échoué à chaque fois (je ne sais pas pourquoi) sur Windows Server 2012 R2.

Mais lorsque j'ai essayé de les installer dans le nouveau serveur, Windows Server 2008 R2, ils se sont installés avec succès. Cela pourrait être la raison de ce problème, mais je ne peux pas encore en être sûr.

6voto

npo Points 684

J'ai eu le même problème lors de la publication de l'application web. Si quelqu'un a toujours ce problème, il l'a résolu en changeant {AppName}.runtimeconfig.json

    {
  "runtimeOptions": {
    "framework": {
      "name": "Microsoft.NETCore.App",
      "version": "1.1.2"
    },
    "configProperties": {
      "System.GC.Server": true
    }
  }
}

Changez la version de "version" : "1.1.2" à "version" : "1.1.1" et tout a fonctionné correctement

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X