web-dev-qa-db-fra.com

Erreur 0x8007000d lors de l'exécution de l'application ASP.NET Core dans IIS malgré l'installation d'AspNetCoreModule

J'ai une application ASP.NET Core qui fonctionne très bien dans IIS Express. De même, si je lance l'application depuis la ligne de commande via dotnet run, tout fonctionne bien:

C:\Code\Sandbox\IisTestApp\IisTestApp>dotnet run
Using launch settings from C:\Code\Sandbox\IisTestApp\IisTestApp\Properties\launchSettings.json...
Hosting environment: Production
Content root path: C:\Code\Sandbox\IisTestApp\IisTestApp
Now listening on: http://localhost:5000
Now listening on: https://localhost:5001
Application started. Press Ctrl+C to shut down.

Si j'essaie de cibler IIS local, j'obtiens l'erreur suivante:

Impossible de démarrer le processus C:\Program Files\dotnet\dotnet.exe. La demande du serveur Web a échoué avec le code d'état 500, Erreur de serveur interne. La réponse complète a été écrite dans C:\Users {mon nom d'utilisateur}\AppData\Local\Temp\HttpFailure_08-05-50.html.

Le fichier HTML contient ces informations:

Screenshot of 500.19 error

Erreur HTTP 500.19 - Erreur de serveur interne

La page demandée n'est pas accessible car les données de configuration associées à la page ne sont pas valides.

Informations détaillées sur l'erreur:

Module IIS Web Core
Notification BeginRequest
Gestionnaire Pas encore déterminé
Code d'erreur 0x8007000d
Erreur de configuration
Fichier de configuration \?\C:\Code\Sandbox\IisTestApp\IisTestApp\web.config
URL demandée http: // localhost: 80/IisTestApp
Chemin physique C:\Code\Sandbox\IisTestApp\IisTestApp
Méthode de connexion Pas encore déterminé
Utilisateur de connexion Pas encore déterminé

Remarque: au cas où ce message ne serait pas évident, il s'agit d'une réprobation minimale de mon problème, pas de l'application réelle

La plupart de ce que je vois en ligne indique que le code d'erreur 0x8007000d indique que je n'ai pas le composant d'hébergement de serveur Windows .NET Core (AspNetCoreModule), mais je l'ai définitivement installé:

screenshot of add remove programs with hosting component installed

Je peux également le voir dans la page principale "Modules" d'IIS, et vérifié que le fichier vers lequel il pointe existe réellement:

Screenshot of modules list in IIS

Étrangement, si j'essaie d'accéder à la page Modules de ce site spécifique, j'obtiens le même message d'erreur que la page Web:

Une erreur s'est produite lors de l'exécution de cette opération.

Détails:

Nom de fichier: \?\C:\Code\Sandbox\IisTestApp\IisTestApp\web.config
Erreur:

Screenshot of site modules error

Cette version du module d'hébergement (2.1.8) correspond généralement à ce que j'ai installé:

C:\Users\{my user name}>dotnet --list-sdks
2.1.202 [C:\Program Files\dotnet\sdk]
2.1.504 [C:\Program Files\dotnet\sdk]

C:\Users\{my user name}>dotnet --list-runtimes
Microsoft.AspNetCore.All 2.1.4 [C:\Program Files\dotnet\shared\Microsoft.AspNetCore.All]
Microsoft.AspNetCore.All 2.1.8 [C:\Program Files\dotnet\shared\Microsoft.AspNetCore.All]
Microsoft.AspNetCore.App 2.1.4 [C:\Program Files\dotnet\shared\Microsoft.AspNetCore.App]
Microsoft.AspNetCore.App 2.1.8 [C:\Program Files\dotnet\shared\Microsoft.AspNetCore.App]
Microsoft.NETCore.App 2.0.9 [C:\Program Files\dotnet\shared\Microsoft.NETCore.App]
Microsoft.NETCore.App 2.1.8 [C:\Program Files\dotnet\shared\Microsoft.NETCore.App]

Et ce que mon application de test cible:

<Project Sdk="Microsoft.NET.Sdk.Web">

  <PropertyGroup>
    <TargetFramework>netcoreapp2.1</TargetFramework>
  </PropertyGroup>

  <ItemGroup>
    <PackageReference Include="Microsoft.AspNetCore.App" />
    <PackageReference Include="Microsoft.AspNetCore.Razor.Design" Version="2.1.2" PrivateAssets="All" />
  </ItemGroup>

</Project>

Malgré tout cela, je pense que le problème est vraiment lié à IIS et à ce composant d'hébergement! Voici le web.config (très par défaut) qui est généré avec le modèle de projet:

<?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="bin\IISSupport\VSIISExeLauncher.exe" arguments="-argFile IISExeLauncherArgs.txt" stdoutLogEnabled="false">
        <environmentVariables />
      </aspNetCore>
    </system.webServer>
  </location>
</configuration>

Remarque: J'obtiens toujours le même message d'erreur si je code en dur le chemin complet dans le processPath, ou utilise .\ chemin relatif

Si je supprime le <aspNetCore> node, j'obtiens une erreur différente:

Erreur HTTP 502.3 - Mauvaise passerelle

Une erreur de connexion s'est produite lors de la tentative d'acheminement de la demande.

Informations détaillées sur l'erreur:

Module AspNetCoreModule
Notification ExecuteRequestHandler
Gestionnaire aspNetCore
Code d'erreur 0x80070490
URL demandée http: // localhost: 80/IisTestApp
Chemin physique C:\Code\Sandbox\IisTestApp\IisTestApp
Méthode de connexion Anonyme
Utilisateur de connexion Anonyme

Le fait étant que AspNetCoreModule renvoie cette fois l'erreur, donc il est en cours de chargement et en exécutant du code.

Publication dans un dossier distinct et configuration manuelle du site dans IIS (plutôt que de s'appuyer sur le comportement par défaut de Visual Studio pour créer un site Web IIS pointé sur le " bin ") entraîne le même message d'erreur, bien que j'obtienne un nœud aspNetCore légèrement différent dans le fichier web.config généré:

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

Qu'est-ce qui empêche IIS de ne pas exécuter cette application?

J'ai essayé de réinstaller .NET Core (SDK, runtime et composant d'hébergement) mais cela n'a pas aidé.

J'ai également remarqué plusieurs articles mentionnant l'installation du module de réécriture d'URL pour IIS corrige cette erreur (notamment ceci: Erreur HTTP 500.19 - IIS 7.5 Erreur 0x8007000d ). Mon web.config ne mentionne pas ce module, mais j'ai essayé de l'installer au cas où l'AspNetCoreModule l'utiliserait sous les couvertures. Cela n'a pas aidé dans ma situation.

10
Josh Darnell

Après avoir exclu tout ce qui est spécifique à l'application auquel je (et les nombreux commentateurs utiles, en particulier Daboul ) pouvais penser, et après avoir examiné les paramètres visibles IIS, j'ai eu recours à en regardant le fichier de configuration principal pour IIS dans son ensemble: applicationHost.config

Par Introduction à ApplicationHost.config , ce fichier se trouve dans %windir%\system32\inetsrv\config. Étant donné que la véritable application fonctionne sur une autre machine dans mon bureau, je les ai comparés à l'aide d'un programme de comparaison et j'ai constaté que le nœud suivant manquait dans mon fichier de configuration:

<?xml version="1.0" encoding="UTF-8"?>
<configuration>
    <configSections>
        <!-- ...lots of other stuff... -->
        <sectionGroup name="system.webServer">
            <!-- ...lots of other stuff... -->

            <!--This "section" node for aspNetCore is the one that was missing-->
            <section name="aspNetCore" overrideModeDefault="Allow" />

L'ajout de ce nœud a résolu l'erreur.

Curieusement, l'AspNetCoreModule lui-même est référencé plusieurs fois plus tard dans le fichier. Étant donné que je n'ai pas modifié manuellement ce fichier auparavant, il semble possible que ce soit une sorte d'erreur d'installation lors de la première installation d'AspNetCoreModule.

7
Josh Darnell

J'ai essayé d'utiliser la suggestion ci-dessus, mais cela n'a pas fonctionné. J'ai donc réinstallé l'hébergement Asp Net Core Runtime en mode administrateur et mon ApplicationHost.Config a été corrigé.

1
Marcos Reis

L'installation du pack d'hébergement .NET Core a résolu le problème pour moi. ici est un lien vers le pack d'hébergement .NET Core.

Utilisation de .NET Core 3.1

0
user705199