148 votes

ASP MVC dans IIS 7 résulte en : HTTP Error 403.14 - Forbidden (Interdit)

Je suis en train de développer un projet web ASP MVC. J'ai maintenant une exigence qui m'oblige à déployer sur un IIS7 au milieu du développement (pour vérifier certaines fonctionnalités). Je reçois le message d'erreur mentionné ci-dessus lorsque j'essaie de taper l'URL du site Web. (Note : machine de développement : Vista Home Premium, IIS7)

Ce que j'ai fait jusqu'à présent :

Modifié le fichier HOSTS ( C:\WINDOWS\system32\drivers\etc\hosts ).

Mettez-y deux domaines (127.0.0.1 domain1.com & 127.0.0.1 domain2.com).

Création d'un dossier c : \websites\dirOfApplication et déployé depuis Visual Studio 8 dans ce dossier.

Dans IIS7, j'ai créé un nouveau site avec le nom d'hôte domain1.com et le dossier d'application ci-dessus.

En tapant l'adresse domain1.com dans le navigateur Web, on obtient l'erreur ci-dessus (HTTP Error 403.14 - Forbidden - The Web server is configured to not list the contents of this directory).

Je pense qu'il me manque quelque chose mais je ne sais pas quoi ! J'ai essayé de déployer les fichiers System.Web.Mvc, System.Web.Abstraction & System.Web.Routing avec le même résultat. Chaque fois que j'essaie d'appuyer sur F5 et de lancer l'application, elle fonctionne bien !

0 votes

Duplicata possible de ASP.NET MVC sur IIS 7.5

227voto

Cyril Mestrom Points 1457

Peut-être que ça peut être utile à quelqu'un : Après avoir converti mon application en MVC 4 avec .NET framework 4.5 et installé le framework sur mon serveur avec IIS 7.0, j'ai rencontré la même erreur 'forbidden' mentionnée dans la question. J'ai essayé toutes les options décrites ci-dessus, sans succès, lorsque j'ai remarqué que l'erreur "forbidden" (interdit) était présente.

<system.webServer>
 <modules runAllManagedModulesForAllRequests="true"/>
</system.webServer>

était absent de mon web.config. Après avoir ajouté ceci, tout a fonctionné. Simple, mais facile à négliger...

EDITAR:

Bien sûr, la solution ci-dessus fonctionnera, mais c'est effectivement un gaspillage de ressources. Je pense qu'il est préférable d'ajouter le module de routage comme indiqué par Chris Herring dans les commentaires.

<system.webServer>
  <modules>
    <remove name="UrlRoutingModule-4.0" />
    <add name="UrlRoutingModule-4.0" type="System.Web.Routing.UrlRoutingModule" preCondition="" />
  </modules>
</system.webServer>

2 votes

Il s'avère que lorsque j'ai désinstallé un paquet NuGet, cela a supprimé le fichier runAllManagedModulesForAllRequests="true" de mon Web.config. Merci de m'en avoir parlé avant que je ne passe toute la nuit à essayer de résoudre ce problème.

3 votes

CECI ! Arrrrgh J'ai passé/perdu une journée entière à essayer de faire fonctionner ce programme jusqu'à ce que je trouve votre réponse, merci ! Ce qui est étrange, c'est qu'il fonctionne très bien avec IIS sur ma machine locale, mais pas sur la machine de production, alors qu'elles exécutent toutes deux IIS7.5.

1 votes

C'était ça. La désinstallation de Cassette Nuget le supprime parfois. Merci.

126voto

Brettski Points 5485

Réponse sur SO ici question : 403 - Forbidden (interdit) sur un déploiement MVC 3 de base sur iis7.5

Exécuter aspnet_regiis -i . J'ai souvent constaté que vous devez le faire pour que les applications 4.0 fonctionnent. Ouvrez une invite de commande en tant que Administrator (cliquez avec le bouton droit de la souris sur l'icône de l'invite de commande et sélectionnez Exécuter en tant qu'administrateur) :

cd \
cd Windows\Microsoft.NET\Framework\v4.xxx.xxx
aspnet_regiis -i

Une fois qu'il a été installé et enregistré, assurez-vous que votre application utilise un pool d'applications qui est défini sur .NET 4.0.

MISE À JOUR : Je viens de trouver un problème avec cette commande. L'utilisation de -i a mis à jour tous les pools d'applications en ASP.NET 4.0.

Utilisation de aspnet_regiis -ir installe la version d'ASP.NET mais ne modifie aucune application web vers cette version. Vous pouvez également revoir l'option -iru.

0 votes

Ça a marché pour moi aussi. Après avoir exécuté la commande aspnet_regiis -i, UrlMappingModule a été installé dans IIS.

0 votes

Après avoir installé IIS, j'ai dû exécuter aspnet_regiis pour que tout fonctionne, même si .NET 4 semblait être déjà enregistré.

0 votes

Si le framework a été installé avant IIS, alors oui, vous devrez utiliser aspnet_regiis.

36voto

Bogdan Litescu Points 310

J'ai également rencontré cette erreur. Toute la configuration et les permissions étaient correctes. Mais j'ai oublié de copier Global.asax sur le serveur, et c'est ce qui a donné l'erreur 403.

0 votes

Dans mon cas, je l'avais déplacé accidentellement avec la souris sans m'en rendre compte. Merci !

0 votes

Je viens de perdre 2 heures parce que j'avais oublié de copier ce fichier, après avoir effacé mon dossier de documents Web !

15voto

savvas sopiadis Points 515

C'est parce que vous êtes trop sûr de ce que vous (moi) faites !

Sur ma machine, IIS 7 est installé mais le composant ASP.NET requis (Panneau de configuration->Programmes->Activer/Désactiver->ASP.NET) ne l'était pas.

L'installation de ceci a résolu le problème

1 votes

Oui, pour mon cas. Mon Windows 10 Local IIS ASP.NET n'est pas activé. Allez sur Turn Windows Features on of off > Internet Information Services > World Wide Web Services > Application Development Features > Tick ASP.NET 3.5 & ASP.NET 4.8

0 votes

Cela a réglé mon problème. Je suis un tout nouveau Windows 10 et je n'avais pas encore ces fonctionnalités.

7voto

Stefan Michev Points 131

Dans mon cas, l'approche suivante m'a aidé :

  1. aspnet_regiis -i sur Windows\Microsoft.Net\Framework

  2. Ajout de modules à system.webServer

    <system.webServer>
        <modules runAllManagedModulesForAllRequests="true"/>
        ...
    </system.webServer>

0 votes

Je suppose que vous avez omis le cadre. Mais ouvrez cmd en tant qu'admin, et exécutez aspnet_regiis -i dans Windows \Microsoft.Net\Framework\v4.0.30319

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