web-dev-qa-db-fra.com

ASP.NET Core 1.0 sur IIS erreur 502.5

Je viens de mettre à jour mon serveur (Windows 2012R2) avec .Net Core 1.0 RTM Pack d'hébergement Windows du précédent .Net Core 1.0 RC2. Mon application fonctionne sur mon PC sans aucun problème, mais le serveur continue d'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

Cela fonctionnait auparavant avec la version RC2. Je ne sais pas ce qui pourrait aller de travers.

Ceci est tout l'observateur d'événement dit:

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

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

Que devrais-je faire?? Comment puis-je connaître la cause de l'erreur quand ce n'est pas enregistré ??

110
Vahid Amiri

J'ai donc un nouveau serveur, cette fois, c'est 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’avais précédemment compilé l’application sans aucune plate-forme à l’esprit, elle m’a donné la version dll qui ne fonctionne que si l’hôte cible a le paquet .Net Core Windows Hosting installé. Dans mon cas c'était installé et c'était bon.

Après que l'application ne fonctionne plus, j'ai décidé de la compiler en tant qu'application console avec win7-x64 comme runtime. Cette fois, au moment où j'ai exécuté la exe de mon application sur le serveur, une erreur s’est produite lors de l’ajout d’une dll manquante:

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

Cette dll provient de Universal C Runtime et est incluse dans le Visual C++ redistribuable pour Visual Studio 2015.

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

Mais lorsque j'ai essayé de les installer sur le nouveau serveur, Windows Server 2008 R2, ils ont été installés avec succès. C'était peut-être la raison derrière cela, mais je ne peux toujours pas le dire avec certitude.

10
Vahid Amiri

J'ai pu le réparer en courant

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

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

"L'infrastructure spécifiée 'Microsoft.NETCore.App', version '1.0.1' est introuvable. - Vérifiez les dépendances de l'application et ciblez une version de l'infrastructure installée à l'emplacement suivant: C:\Program Files\dotnet\shared\Microsoft.NETCore.App - Les versions suivantes sont installées: 1.0.0 - Vous pouvez également installer la version de framework '1.0.1'.

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

109
hatsrumandcode

J'ai eu le même problème, dans mon cas, la permission de l'identité de l'utilisateur de mon pool d'applications était insuffisante, sur la page Publication sur IIS de la documentation asp.net, deux raisons sont à l'origine de cette erreur. :

  • Si vous avez publié une application autonome, confirmez que vous n'avez pas défini de plateforme dans buildOptions sur project.json 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 consignées ci-dessus sur le serveur.
  • Vérifiez l'attribut processPath sur l'élément <aspNetCore> dans web.config pour confirmer qu'il s'agit de dotnet pour une application portable ou.\My_application.exe pour une application autonome.
  • Pour une application portable, il est possible que dotnet.exe ne soit pas accessible via les paramètres PATH. Confirmez que C:\Program Files\dotnet\ existe dans les paramètres System PATH.
  • Pour une application portable, il est possible que dotnet.exe ne soit pas accessible pour l'identité d'utilisateur du pool d'applications. Confirmez que l'identité de l'utilisateur AppPool a accès au répertoire C:\Program Files\dotnet.
  • Vérifiez que vous avez correctement référencé le middleware d'intégration IIS en appelant la méthode .UseIISIntegration() de l'application WebHostBuilder() de l'application.
  • Si vous utilisez la méthode d'extension .UseUrls() lorsque vous vous auto-hébergez avec Kestrel, vérifiez qu'elle est positionnée avant la méthode d'extension .UseIISIntegration() sur WebHostBuilder(). .UseIISIntegration() doit définir la variable Url du proxy inverse lors de l'exécution de Kestrel derrière IIS et ne pas avoir sa valeur remplacée par .UseUrls().

Dans mon cas, c’était la quatrième raison. Je l’ai modifiée en cliquant avec le bouton droit de la souris sur mon pool d’applications et, dans les paramètres avancés sous Modèle de processus, j’ai défini l’identité sur un utilisateur disposant des droits suffisants: user identity of my Application Pool

66
Hamid Mosalla

Je travaille avec une réinitialisation matérielle de IIS (je venais juste d'installer le pack d'hébergement).

Il s'avère que le simple fait d'appuyer sur 'Redémarrer' dans IIS Manager ne suffit pas. Je viens juste d'ouvrir une invite de commande et de taper 'iisreset'

62
michael_hook

J'ai eu le même problème.

Pour connaître la source exacte, j'ai activé la journalisation dans le fichier web.config:

<aspNetCore processPath="dotnet" arguments=".\MyWebService.dll" stdoutLogEnabled="**true**" stdoutLogFile=".\logs\stdout" />

et créé des journaux sous-dossier dans le dossier racine MyWebService.

Après avoir redémarré IIS et essayé d'exécuter l'API, une erreur s'est produite et Core Runtime manquait. Après avoir téléchargé l’installation de DotNetCore.1.0.5_1.1.2-Windows, l’erreur disparue.

4
Eduard Silantiev

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 est 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" en "version": "1.1.1" et tout fonctionnait bien

4
npo

Avait le même problème et toutes les solutions ne fonctionnaient pas. J'ai trouvé ce petit bijou et pensé que je transmettrais si cela aidait quelqu'un d'autre. Installez sur Server 2012 R2 en obtenant l'erreur manquante DLL, essayez de réinstaller VS C++ 2015 et obtenez une erreur. Fix est de faire ce qui suit:

Le fichier C:\ProgramData\Package Cache\...\packages\Patch\x64\Windows8.1-KB2999226-x64.msu a des problèmes d’installation. Ouvrez la commande admin Invite do:

c:
mkdir tmp
mkdir tmp\tmp
move "C:\ProgramData\Package Cache\...\packages\Patch\x64\Windows8.1-KB2999226-x64.msu" c:\tmp
expand -F:* c:\tmp\Windows8.1-KB2999226-x64.msu c:\tmp\tmp
dism /online /add-package /packagepath:c:\tmp\tmp\Windows8.1-KB2999226-x64.cab

REMARQUE: remplacez le "..." par le nom de dossier correct. Après cela, réinstallez le package VS C++ 2015.

3
Lee Harris

RÉSOLU Je viens de faire face au même problème aujourd'hui lors du déploiement vers Azure. Ensuite, j'ai essayé la même chose pour IIS local, j'ai eu le même problème. Comme je suis nouveau sur .net CORE, j'ai eu du mal à le résoudre quelques heures avant de le résoudre.

Dans notre solution, après avoir publié sur IIS, j’ai observé mon fichier web.confile, spécialement sous la ligne <aspNetCore processPath="bin\IISSupport\VSIISExeLauncher.exe" arguments="-argFile IISExeLauncherArgs.txt" forwardWindowsAuthToken="false" stdoutLogEnabled="false" />

Dans notre dossier de déploiement, le fichier Web.config généré ressemble à ceci: <aspNetCore processPath="dotnet" arguments=".\Yodlee.dll -argFile IISExeLauncherArgs.txt" forwardWindowsAuthToken="false" stdoutLogEnabled="false" stdoutLogFile=".\logs\stdout" />

VEUILLEZ essayer de modifier la configuration ci-dessus dans Visual Studio solution<aspNetCore processPath="bin\IISSupport\VSIISExeLauncher.exe" forwardWindowsAuthToken="false" stdoutLogEnabled="false" />

Dans notre nouveau dossier de déploiement, le fichier Web.config généré ressemble à ceci:<aspNetCore processPath="dotnet" arguments=".\Yodlee.dll" forwardWindowsAuthToken="false" stdoutLogEnabled="false" stdoutLogFile=".\logs\stdout" />

Et cela a résolu mon problème, j'espère que cela vous aidera.

3
Agni

J'ai eu ce problème sur mon serveur de production après la mise à niveau automatique de mon projet VS vers .NET Core 1.1.2.

J'ai simplement installé le moteur d'exécution 1.1.2 .net à partir d'ici sur mon serveur de production: https://www.Microsoft.com/net/download/core#/runtime

3
Rikard Askelöf

J'ai eu le même problème lorsque j'ai mis à jour ma machine de développement vers Core 1.0.1, mais j'ai oublié de mettre à jour le serveur.

2
Alex Dresko

J'avais un problème similaire, et pour citer Sherlock Holmes: "quand vous avez éliminé l'impossible, tout ce qui reste, aussi improbable soit-il, doit être la vérité?"

J'ai vérifié si le framework .NET que je ciblais était installé sur le serveur et il s'avère que ce n'était pas le cas. J'ai installé le .NET Framework 4.6.2 et cela a fonctionné.

2
TheDoctor05

J'obtenais l'erreur HTTP 502.5 en essayant de publier mon API .NET Core 2.0 sur AWS EB et je l'ai résolu en ajoutant le code suivant au fichier .csproj:

  <PropertyGroup>
    <PublishWithAspNetCoreTargetManifest>false</PublishWithAspNetCoreTargetManifest>
  </PropertyGroup>
2
Matheus Lacerda

Dans mon cas, après avoir installé AspNetCore.2.0.6.RuntimePackageStore_x64.exe et DotNetCore.2.0.6-WindowsHosting.exe, il me faut redémarrer le serveur pour que cela fonctionne sans 502 passerelles défectueuses et erreur proxy.

MISE À JOUR:

Vous pouvez l’utiliser sans redémarrer d’une autre manière: https://stackoverflow.com/a/50808634/3634867

1
John_J

J'ai eu la même erreur en question, avec les mêmes problèmes que ceux décrits par VSG24 dans Réponse proposée - message d'erreur désagréable lors de la saisie de 'dotnet' dans CMD:

Le programme ne peut pas démarrer car api-ms-win-crt-runtime-l1-1-0.dll est manquant

J'ai résolu ce problème en installant manuellement les 2 mises à jour suivantes sur Windows Server 2012 R2 (ainsi que les conditions préalables et toutes les autres mises à jour liées - lisez attentivement les instructions d'installation sur le site Web de Microsoft):

  1. KB2919355
  2. KB2999226

J'espère que ça aide quelqu'un.

1
Johan Foley

J'ai rencontré le même problème lorsque j'ai essayé de publier la version Debug de mon application Web. Cet ensemble de fichiers ne contenait pas le fichier web.config avec la valeur appropriée de l'attribut processPath.

J'ai pris ce fichier de la version Release, la valeur a été attribuée au chemin d'accès à mon fichier exe.

<aspNetCore processPath=".\My.Web.App.exe" ... />
1
Barabas

Je l'ai résolu en ajoutant "l'autorisation de modification" à l'application du site, mappé sur le répertoire physique, puis sélectionné l'utilisateur Windows pouvant avoir accès à ce dossier racine. (Réseau privé).

1
Antonin GAVREL

J'avais besoin d'installer la dernière version .net Core trouvée ici . Pas besoin de redémarrer le site ou le serveur

Pour moi, cela est dû au fait que différentes versions de .Net Core sont installées. J'ai assorti mon serveur de production et de développement et cela a fonctionné.

1
Carla

Partageant que dans mon cas, cette erreur était due au fait que j'avais oublié de mettre à jour project.json avec:

"buildOptions": {
    "emitEntryPoint": true
  }
1
vinjenzo

Ouvrir invite de commande avec administrateur informations d'identification

Tapez la commande suivante et appuyez sur Entrée

> IISRESET

OR

Ouvrez Visual Studio 2017 avec administrateur informations d'identification

Tapez la commande suivante dans Package Manager Console et appuyez sur Entrée

PM> IISRESET

PM> IISRESET
Attempting stop...
Internet services successfully stopped
Attempting start...
Internet services successfully restarted
1
Akshay Mishra

J'ai eu le même problème. J'ai changé l'identité du pool d'applications en compte de service réseau. Ensuite, j'ai explicitement défini le chemin d'accès à dotnet.exe dans le fichier web.config pour que l'application fonctionne correctement, comme l'a indiqué @danielyewright dans son commentaire github . Cela fonctionne après avoir défini le chemin.

Merci

1
vik

Dans mon cas, il y avait un problème avec la version de Net Core installée sur le serveur. Je viens d'installer la même version que sur ma machine de développement et tout va bien :-)

1
SaltFish

J'ai eu ce problème aussi (L'erreur s'est produite à la fois sur VS 15 et 17). Cependant, sur VS15, il a renvoyé une erreur CONNECTION_REFUSED et sur VS17, il a renvoyé ASP.NET Core 1.0 on IIS error 502.5.

FIX

  1. Accédez au répertoire de votre projet et localisez le dossier caché .vs (situé dans le dossier des projets). (N'oubliez pas de montrer les fichiers/dossiers cachés)

  2. Fermer VS

  3. Supprimer le dossier .vs
  4. Démarrer VS en tant qu'administrateur (le dossier .vs sera recréé par VS)
0
Unicco

J'ai changé les options de profil pour cela et ça marche !!!

enter image description here

Peut-être devriez-vous changer ces deux options:

  1. Mode de déploiement
  2. Runtime cible
0
hosein dafeyan

J'avais la même erreur et j'ai découvert que le problème était que, lors de la publication dans Azure, mon fichier web.config avait été modifié et que la ligne suivante était terminée. comme ça:

<aspNetCore processPath="bin\IISSupport\VSIISExeLauncher.exe" arguments="-argFile IISExeLauncherArgs.txt" forwardWindowsAuthToken="false" stdoutLogEnabled="false" startupTimeLimit="3600" requestTimeout="23:00:00" />

Le problème pour Production est le contenu des arguments: "- argFile IISExeLauncherArgs.txt"

Il semble que ce problème sera traité dans le prochain Kit de développement .NET Core SDK (actuellement en aperçu), mais pour l’instant, la solution consiste à ajouter ce bloc au fichier .csproj:

<Target Name="bug_242_workaround" AfterTargets="_TransformWebConfig">
    <Exec Command="powershell &quot;(Get-Content '$(PublishDir)Web.config').replace(' -argFile IISExeLauncherArgs.txt', '') | Set-Content '$(PublishDir)Web.config'&quot;" />
  </Target>

Cela modifiera le fichier web.config et supprimera la partie problématique pour la publication.

Référence: https://github.com/aspnet/websdk/issues/242

J'espère que ça aide.

0
Rodrigo Pires

Voici ce que j'ai pensé, et cela s'est produit récemment sous Windows 10 après l'installation d'une mise à jour. D'après ce que j'ai compris, une mise à jour de Windows Defender a été installée. Elle supposait que mon "Project.dll" (un projet principal asp.net) se comportait comme un virus et qu'il a donc été supprimé.

Donc, une des premières choses que je vous suggère de faire avant de commencer l’installation/la désinstallation de fichiers est de vérifier que votre "Project.dll" se trouve à l’endroit où il devrait se trouver

Recopiez-le à l'emplacement s'il n'y est plus.

Si vous rencontrez des difficultés pour copier le fichier, ajoutez une exclusion à votre dossier de projet dans Windows Defender . ( Apprenez à faire ça ici .)

Cela a fonctionné instantanément pour moi et je l'ai répété sur plusieurs serveurs d'applications.

0
Seun S. Lawal

J'ai eu le même problème et la raison dans mon cas était que le noyau EF essayait de lire la chaîne de connexion à partir du fichier appsettings.development.json. Je l'ai ouvert et j'ai trouvé que la chaîne de connexion était commentée.

//{
//  "ConnectionStrings": {
//    "DefaultConnection": "Server=vaio;Database=Goldentaurus;Trusted_Connection=True;",
//    "IdentityConnection": "Server=vaio;Database=GTIdentity;Trusted_Connection=True;"
//  }
//}

Je les ai alors engagés comme ci-dessous et le problème résolu:

{
  "ConnectionStrings": {
    "DefaultConnection": "Server=vaio;Database=Goldentaurus;Trusted_Connection=True;",
    "IdentityConnection": "Server=vaio;Database=GTIdentity;Trusted_Connection=True;"
  }
}
0
yogihosting

J'avais un problème similaire (Asp.Net Core 2.x) provoqué par une tentative d'exécution d'une application principale asp.net 32 ​​bits dans IIS sur un serveur Windows 64 bits. La cause première était que le fichier web.config généré automatiquement (si votre projet n'en inclut pas explicitement, les projets principaux asp.net ne le faisant pas par défaut) ne contient pas le chemin d'accès complet à l'exécutable dotnet. Lorsque vous installez le pack d'hébergement sur un ordinateur 64 bits, il installera les versions 64 et 32 ​​bits de Dotnet, mais le chemin d'accès sera résolu par défaut en 64 bits et votre application principale asp.net 32 ​​bits échouera. Une erreur 502.5 peut s'afficher dans votre navigateur. Si vous consultez le journal des événements du serveur, le code d'erreur 0x80004005 peut s'afficher. Si vous essayez d'exécuter dotnet.exe à partir d'une invite de commande pour charger votre dll d'application principale asp.net sur ce serveur, une erreur telle que "BadImageFormatException" ou "une tentative de chargement d'un programme au format incorrect" peut s'afficher. Le correctif qui a fonctionné pour moi a été d'ajouter un fichier web.config à mon projet (et son déploiement) et, dans ce fichier web.config, de définir le chemin d'accès complet à la version 32 bits de dotnet.exe.

<?xml version="1.0" encoding="utf-8"?>
<configuration>
    <location path="." inheritInChildApplications="false">
        <system.webServer>
            <handlers>
                <add name="aspNetCore" path="*" verb="*" modules="AspNetCoreModule" resourceType="Unspecified" />
            </handlers>
            <aspNetCore processPath="C:\Program Files (x86)\dotnet\dotnet.exe" arguments=".\My32BitAspNetCoreApp.dll" stdoutLogEnabled="false" stdoutLogFile=".\logs\stdout" />
       </system.webServer>
   </location>
</configuration>
0
Nathan

Pour moi, c’était que le connectionString dans Startup.cs était null dans:

services.AddDbContext<ApplicationDbContext>(options => options.UseSqlServer(Configuration.GetConnectionString("DefaultConnection")));

et il était nul parce que l'application ne cherchait pas dans appsettings.json pour la chaîne de connexion.

Devait changer Program.cs pour:

public static void Main(string[] args)
{
    BuildWebHost(args).Run();
}

public static IWebHost BuildWebHost(string[] args) =>
     WebHost.CreateDefaultBuilder(args)
     .ConfigureAppConfiguration((context, builder) => builder.SetBasePath(context.HostingEnvironment.ContentRootPath)
     .AddJsonFile("appsettings.json").Build())
     .UseStartup<Startup>().Build();
0
Andrei Dobrin

Je ne sais pas pourquoi cela a fonctionné pour moi, mais j'utilise l'authentification Windows et j'avais ce morceau de code sur mon BuildWebHost dans Program.cs:

.UseStartup<Startup>()
.UseHttpSys(options =>
{
    options.Authentication.Schemes =
        AuthenticationSchemes.NTLM | AuthenticationSchemes.Negotiate;
    options.Authentication.AllowAnonymous = false;
})
.Build();

Après avoir supprimé le bit .UserHttpSys, il fonctionne maintenant et je peux toujours m'authentifier en tant qu'utilisateur de domaine.

BuildWebHost ressemble maintenant à

public static IWebHost BuildWebHost(string[] args) =>
    WebHost.CreateDefaultBuilder(args)
    .UseStartup<Startup>()
    .Build();
0
Bassie

Travaillé pour moi après avoir changé la configuration de publication.

enter image description here

0
MAFAIZ