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:
Je suis ensuite allé sur IIS 10 et j'ai créé un nouveau site Web avec "localhost" comme lien:
Le chemin physique de ce nouveau site Web dans IIS est C:\inetpub\wwwroot\AspNetMvcTest
:
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:
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:
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:
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:
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:
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:
Si nous inspectons la demande et la réponse dans Fiddler, il y a 500 erreurs dont la longueur du contenu = 0
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:
J'ai ajouté "attraper tout" gestion des exceptions à Global.asax, aucun point d'arrêt :
Voici ma pile d'appels, qui est vide et qu'aucun point d'arrêt de la capture d'écran n'a été atteint:
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:
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:
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:
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:
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é:
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.
Alors maintenant je suis coincé et je ne sais plus quoi faire.
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:
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.