web-dev-qa-db-fra.com

Impossible d'exécuter une application ASP.NET MVC simple avec Visual Studio 2015 à partir de IIS (Serveur interne 500)

  • Windows 10 Professionnel
  • IIS 10
  • Visual Studio 2015 (s'exécutant en tant qu'administrateur)

Je souhaite exécuter à partir de IIS au lieu de IIS Express, car j'ai une adresse IP externe pointant vers ma machine et je vais recevoir des messages d'une source externe. En fin de compte, j'utiliserai WebAPI, mais pour tester et configurer IIS, j'utilise une simple application Web ASP.NET MVC 5.

J'ai créé une nouvelle application Web ASP.NET MVC 5, il s'agit du modèle MVC Visual Studio 2015 squelette. J'ai ensuite exécuté l'application à l'aide de IIS Express. Aucun problème:

 enter image description here

Je suis ensuite allé sur IIS 10 et j'ai créé un nouveau site Web avec "localhost" comme lien:

 enter image description here

Le chemin physique de ce nouveau site Web dans IIS est C:\inetpub\wwwroot\AspNetMvcTest:

 enter image description here

Je suis ensuite allé dans les propriétés de l'application Web et suis passé à IIS. On m'a demandé si je voulais créer un nouveau répertoire virtuel:

 enter image description here

J'ai cliqué sur Oui , si vous cliquez sur Non l'opération sera annulée et les propriétés de votre application Web non enregistrées. Vous devez cliquer sur Yes pour passer à la propriété Local IIS dans Visual Studio.

On m'a alors dit que IIS "localhost" était mappé vers un autre dossier et voudrais-je remapper:

 enter image description here

J'ai cliqué sur oui . Si vous cliquez sur No , les propriétés d'application Web ne seront plus enregistrées et vous n'utiliserez pas Local IIS dans Visual Studio. 

Ceci est intéressant, Visual Studio essaie de changer le "répertoire virtuel" car il modifiera réellement le chemin physique du IIS site Web et n'ajoutera pas de répertoire virtuel. Un répertoire virtuel est un dossier situé quelque part à l'extérieur du chemin physique du IIS site Web que IIS considérera comme faisant partie du dossier du chemin physique. Mais je m'éloigne du sujet.

Maintenant, on me dit que le "Répertoire virtuel" a été créé avec succès:

 enter image description here

Nous pouvons maintenant examiner les modifications apportées par Visual Studio 2015 à IIS 10:

Nous n'avons pas de répertoires virtuels sur le site Web liés à localhost:

 enter image description here

Mon chemin physique a été modifié par Visual Studio 2015 et il est mappé dans mon répertoire. Ma simple application Web ASP.NET MVC 5 réside:

 enter image description here

Ainsi, même si Visual Studio 2015 utilise le "répertoire virtuel" lors de la modification des propriétés de l'application Web ASP.NET MVC 5, Visual Studio 2015 ne concernait que le chemin physique et c'est la seule chose qu'il a modifiée dans IIS que je peux voir.

Maintenant pour les détails de l'Internal Server Error 500

J'appuie sur F5 dans Visual Studio 2015 et F12 Tools indique qu'il y a une erreur Internal Server 500:

 enter image description here

Si nous inspectons la demande et la réponse dans Fiddler, il y a 500 erreurs dont la longueur du contenu = 0

 enter image description here

Pour essayer d'obtenir plus de détails sur l'erreur 500, j'ai désactivé les erreurs personnalisées dans mon Web.Config et également ajouté httpErrors Detailed et PassThrough:

 enter image description here

J'ai ajouté "attraper tout" gestion des exceptions à Global.asax, aucun point d'arrêt  enter image description here :

Voici ma pile d'appels, qui est vide et qu'aucun point d'arrêt de la capture d'écran n'a été atteint:

 enter image description here

J'ai ajouté une application console à ma solution en tant que "Définir en tant que projet de démarrage" et voici ma pile d'appels prouvant qu'un point d'arrêt peut être atteint:

 enter image description here

Voici une capture d'écran de Event Viewer -> Application, j'ai effacé le journal des applications, appuyé sur F5 dans Visual Studio 2015, actualisé le journal des applications et celui-ci est toujours vide:

 enter image description here

Je pensais que le problème était lié aux autorisations de dossier après que Visual Studio ait modifié le chemin physique

J'ai donc ajouté IIS_IUSRS et donné un contrôle total même si le compte n'a pas besoin d'un niveau d'autorisation aussi élevé que le répertoire du chemin physique:

 enter image description here

Mon ApplicationPoolIndentity est Framework v4.0 et ApplicationPoolIdentity. ApplicationPoolIdentity se voit attribuer le statut de membre du groupe Utilisateurs ainsi que du groupe IIS_IUSRS:

 enter image description here

J'ai essayé d'ajouter le pool d'applications spécifique aux propriétés de sécurité du répertoire physique de l'application ASP.NET MVC. J'ai donc d'abord trouvé le processus auquel Visual Studio F5 était attaché:

 enter image description here

J'ai ajouté "DefaultAppPool" et mon IIS pool d'applications "IIS APPPOOL\AspNetMvcTest" au dossier Sécurité physique.

J'ai ajouté index.html au dossier physique de l'application Web et cela ne fonctionne pas:

<html>
<head>
</head>
<body>
<h4 style="color: black">hello world</h4>
</body>
</html>

J'ai déplacé le chemin physique du site Web IIS vers inetpub/wwwroot dans le répertoire créé lors de la création du site Web. Je ne parviens même pas à accéder à un simple fichier HTML. Le même message d'erreur 500 vide s'affiche.

 enter image description here

Alors maintenant je suis coincé et je ne sais plus quoi faire.

12
Brian Ogden

TL; DR

Avant de lire le reste de la réponse, il s'agit de - vous devez probablement exécuter aspnet_regiis , ce que vous pouvez faire à partir de cmd ou via un outil génial de Web Platform Installer, si vous effectuez une recherche dans "ASP.NET", Exécutez ASP.NET IIS Outil d’inscription "que vous pouvez installer. 

Réponse d'origine:

Merci pour toute l’aide de tout le monde. La première chose que j’aurais dû faire est de prendre du recul et de tester un fichier de test index.html "Hello World" à partir d’un IIS site Web avec c:\inetpub\wwwroot en tant que Chemin physique du site Web IIS.

Lorsque vous installez pour la première fois IIS vous avez un site Web par défaut, accédez au site et assurez-vous qu'il fonctionne. Premier bon début pour une nouvelle machine. Mais je viens de supprimer ce IIS site après l'installation de IIS 

Les étapes que j'ai prises pour résoudre ce problème:

  1. J'ai désinstallé IIS via le Panneau de configuration -> Programmes et fonctionnalités -> Fonctionnalités Windows. 
  2. Redémarré mon ordinateur
  3. Installé IIS pour Windows 10 après ce document document
  4. Testé IIS en créant un site Web, à l'aide de DefaultAppPool, puis en parcourant localhost, et cela a fonctionné (encore une fois lors de la première installation de IIS) vous avez ce site Web, mais je l'ai supprimé quelques jours plus tard. depuis)
  5. J'ai constaté que mon simple site Web ASP.NET ne fonctionnait toujours pas et qu'il avait été publié dans c:\inetpub\wwwroot\AspNetMvcTest, de sorte qu'il ne s'agissait pas d'un problème potentiel d'autorisation de dossiers. Lors de la navigation, au lieu de charger mon site Web ASP.NET, IIS a été redirigé vers la racine c:\inetpub\wwwroot et a affiché sa IIS page d’accueil ("iisstart.htm").
  6. Cela signifie que j’avais besoin d’exécuter aspnet_regiis, ce que j’ai fait, à l’aide d’un outil très utile dans Web Platform Installer, si vous effectuez une recherche sur "ASP.NET", vous disposez d’un outil très pratique "Exécuter ASP.NET IIS Enregistrement" que vous pouvez installer. .
  7. Le site Web ASP.NET MVC a commencé à fonctionner à partir de IIS immédiatement après l'actualisation de mon navigateur (localhost dans la barre d'adresse).

 enter image description here

7
Brian Ogden

Je pense que le principal problème est que ASP.NET MVC 5 Web requiert au moins .NET Framework 4.5. D'après les informations que vous avez fournies, le pool d'applications de votre application Web utilisait .NET 4.0. Il semble que vous n'ayez pas encore enregistré ASP.NET 4.5 avec votre IIS. 

Pour enregistrer ASP.NET 4.5 avec IIS, vous pouvez utiliser la commande Invite de Visual Studio (en tant qu'administrateur), accédez au répertoire suivant et exécutez la commande aspnet_regiis.exe -i

C:\Windows\Microsoft.NET\Framework64\v4.5.<version>

Après avoir enregistré avec succès ASP.NET 4.5 avec IIS, modifiez votre application Web pour utiliser le pool d'applications .NET 4.5.

0
Trung Duong