ASP MVC dans IIS 7 entraîne: Erreur HTTP 403.14 - Interdit


146

Je développe un projet web ASP MVC. Maintenant, j'ai 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 chaque fois que j'essaye de taper l'URL du site Web. (Remarque: machine de développement: Vista Home Premium, IIS7)

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

Modification du fichier HOSTS (C: \ WINDOWS \ system32 \ drivers \ etc \ hosts).

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

Créé un dossier c: \ sites Web \ dirOfApplication et déployé à partir de Visual Studio 8 vers ce dossier.

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

La saisie de l'adresse domain1.com dans le navigateur Web entraîne l'erreur ci-dessus (Erreur HTTP 403.14 - Interdit - Le serveur Web est configuré pour ne pas répertorier le contenu de ce répertoire.)

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 d'exécuter l'application, cela fonctionne bien!


duplication possible d' ASP.NET MVC sur IIS 7.5
Fenton

Réponses:


224

Peut-être que c'est utile pour 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 `` interdite '' mentionnée dans la question. J'ai essayé toutes les options décrites ci-dessus en vain, quand j'ai remarqué le

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

manquait dans mon web.config. Après avoir ajouté cela, tout a fonctionné. Simple, mais facile à négliger ...

ÉDITER:

Bien sûr, la solution ci-dessus fonctionnera, mais c'est effectivement un gaspillage de ressources. Je pense qu'il vaut mieux 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
Il s'avère que lorsque j'ai désinstallé un package NuGet, il a supprimé le fichier runAllManagedModulesForAllRequests="true"de mon Web.config. Merci d'avoir mentionné cela avant de passer toute la nuit à essayer de comprendre cela.
Schmalls

3
CE!! Arrrrgh j'ai passé / gaspillé une journée entière à essayer de faire fonctionner cela jusqu'à ce que je trouve votre réponse, merci! Ce qui est étrange, c'est qu'il fonctionnerait très bien sur IIS sur ma machine locale, mais pas sur la boîte de production et ils exécutent tous les deux IIS7.5
Glenn Slaven

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

8
essayez d'éviter d'utiliser ce paramètre en ajoutant le module de routage - britishdeveloper.co.uk/2010/06
Chris Herring

6
J'adore le commentaire de réponse "Peut-être que c'est utile à quelqu'un" ... lol ... On dirait que c'est utile à une tonne de personnes, moi y compris.
Paul

126

Réponse sur SO ici , question: 403 - Interdit sur le déploiement de base de MVC 3 sur iis7.5

Courez aspnet_regiis -i. J'ai souvent constaté que vous deviez le faire pour que les applications 4.0 fonctionnent. Ouvrez une invite de commande en tant que Administrator(cliquez avec le bouton droit sur l'icône d'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 installé et enregistré, assurez-vous que votre application utilise un pool d'applications 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 vers ASP.NET 4.0.

L'utilisation aspnet_regiis -irinstalle la version d'ASP.NET mais ne modifie aucune application Web vers cette version. Vous pouvez également consulter l'option -iru.


A travaillé pour moi aussi. Après avoir exécuté la commande aspnet_regiis -i, UrlMappingModule a été installé dans IIS.
Manish Gupta

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

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

2
N'oubliez pas que pour un système 64 bits, c'est "Framework64". Ie, Windows \ Microsoft.NET \ Framework64 \ v4.xxx.xxx
grahamesd

Pour cette utilisation, la version 64 ou 32 bits de aspnet_regiis n'a pas d'importance. Certains cas particuliers sont répertoriés ici: msdn.microsoft.com/en-us/library/k6h9cz8h.aspx#Anchor_1
Brettski

34

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


Dans mon cas, je l'avais déplacé accidentellement avec la souris sans m'en apercevoir. Merci!
Mathias Lykkegaard Lorenzen

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

10

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.

Donc, l'installation de ceci a résolu le problème


9

J'ai eu le même problème. Cet article de support Microsoft l'a corrigé pour moi.
https://support.microsoft.com/en-us/help/2023146/mvc-2-and-asp.net-4-web-forms-applications-that-use-url-routing-might-return-http- 404-erreurs-quand-ils-essaient-de-traiter-des-urls-sans-extension-sur-iis-7-et-iis-7.5

Dans la boîte de dialogue "Activer ou désactiver les fonctionnalités Windows" de l'application "Programmes et fonctionnalités" du Panneau de configuration Windows, procédez comme suit:

  1. Accédez au nœud suivant: Internet Information Services -> World Wide Web Services -> Common HTTP Features
  2. Assurez-vous que l'option "Redirection d'erreur HTTP" est sélectionnée.

-ou-

  1. Accédez au nœud suivant: Internet Information Services -> World Wide Web Services -> Performances
  2. Assurez-vous que l'option "Compression de contenu statique" est sélectionnée. Après avoir sélectionné l'une ou l'autre des options, cliquez sur "OK" pour enregistrer les modifications.

La réactivation du module de redirection d'erreur HTTP ou du module de compression de contenu statique garantit qu'ASP.NET et IIS synchronisent correctement les événements de pipeline HTTP. Cela permet au module de routage d'URL de traiter les URL sans extension.


7

Essayez d'appliquer les paramètres suivants indiqués ci-dessous:

1) Donnez l'autorisation nécessaire à l' IIS_IUSRSutilisateur sur IIS Server(Faites un clic droit sur le site Web puis Modifier les autorisations> Sécurité).

entrez la description de l'image ici

2) Si vous utilisez .NET Framework 4, assurez-vous que la version .NET Framework se trouve v4.0sur Application Poolcelle utilisée par votre site Web.

entrez la description de l'image ici

3) Ouvrez Commanp Prompt as administratoret exécutez la iisresetcommande afin de redémarrer IIS Server.

J'espère que cela t'aides...


Conseil: si vous obtenez toujours les erreurs d'autorisation après cela, vous devrez peut-être effectuer un iisreset dans la cmd en tant qu'administrateur après avoir fait cela pour que votre site s'exécute dans IIS.
Cory Koch

6

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

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

  2. Ajout de modules à system.webServer

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

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

5

Veuillez également vérifier, si vous exécutez x64, que vous avez activé les applications 32 bits dans les paramètres du pool d'applications

entrez la description de l'image ici


3

Sur la décocher "Précompiler pendant la publication" - J'obtenais l' erreur 403.14 sur un service Web que je venais d'écrire dans VS2015, donc je l'ai réécrit dans VS2013 et obtenais la même erreur. Dans les deux cas, j'ai activé "Précompiler pendant la publication". Je l'ai décoché mais j'obtenais toujours l'erreur. Dans mon cas, j'avais également " Supprimer tous les fichiers existants avant de publier ", mais je ne supprimais pas tout du répertoire cible sur le serveur avant de copier les nouveaux fichiers publiés. Si vous ne le faites pas, un fichier " PrecompiledApp.config " est laissé derrière, ce qui cause le problème. Une fois que j'ai supprimé ce fichier, j'étais en or sur les versions VS2013 et VS2015 de mon service Web.


2

J'ai tout essayé ici; rien n'a fonctionné. Le problème était dans mon Web.configfichier, la liaison d'assembly dépendante a été modifiée du minimum 1au minimum 0.

<!-- was -->
<runtime>
    <assemblyBinding>
        <dependentAssembly>
            <assemblyIdentity name="System.Web.Mvc" />
                <bindingRedirect oldVersion="0.0.0.0-5.2.3.0" newVersion="5.2.3.0" />


<!-- should have been -->
                <bindingRedirect oldVersion="1.0.0.0-5.2.3.0" newVersion="5.2.3.0" />

1

Veuillez noter que parfois une erreur Managed pipeline modeprovoquera cette erreur. Il y a deux choix pour sélectionner integratedet classic.


1

Comment réparer «Erreur HTTP 403.14 - Interdit Le serveur Web est configuré pour ne pas répertorier le contenu de ce répertoire»

Cette erreur se produit lorsque MVC 2+ est hébergé sur IIS 7+, car ASP.NET 4 n'a pas été enregistré dans IIS. Dans mon cas, je créais un projet MVC 3 et je l'hébergais sur IIS 7.5.

Pour résoudre ce problème, assurez-vous que MVC 2 ou supérieur et .Net Framework 4.0 sont installés, puis exécutez une invite de commande en tant qu'administrateur et tapez la ligne suivante:

32 bits (x86)

% windir% \ Microsoft.NET \ Framework \ v4.0.30319 \ aspnet_regiis.exe -ir

64 bits (x64)

% windir% \ Microsoft.NET \ Framework64 \ v4.0.30319 \ aspnet_regiis.exe -ir


1

Vérifiez votre fichier Global.asax . Dans mon cas, c'était vide.


1

Si les principales réponses ne fonctionnent pas, recherchez une configuration nommée PrecompiledApp.configdans le répertoire d'hébergement et supprimez-la si elle existe. Ce fichier empêche IISExpress et LocalIIS de fonctionner correctement. (Et je pense que c'est un bug) Le contenu du fichier dans mon cas était:

<precompiledApp version="2" updatable="true"/>

Et je suis sûr à 100% que c'était le problème avec mon étui puisque j'ai tout essayé en 2 heures et testé de nombreuses fois avec cette configuration.

Une dernière chose: vous ne pouvez pas utiliser aspnet_regiisdans les versions plus récentes de Windows et IIS alors essayez

dism /online /enable-feature /featurename:IIS-ASPNET45 /all

1

Panneau de configuration> activer ou désactiver les fonctionnalités de Windows> Serveur Web> Développement d'applications

Vérifiez ASP.NET


0

J'ai également rencontré cette même erreur, malgré toutes les solutions proposées pour les raisons suivantes:

  • DLL manquantes
  • La chaîne de connexion à la base de données pointe vers un serveur inaccessible.

0

Dans mon cas, web.config et tous les fichiers à l'exception du dossier / bin étaient manquants (pas copiés d'une manière ou d'une autre).
C'est idiot, mais c'est la dernière chose que j'ai vérifiée.


0

J'ai récemment eu cette erreur et j'ai constaté que le problème était dû au fait que la fonctionnalité «Redirection HTTP» n'était pas activée sur mon serveur Windows. Cet article de blog m'a aidé à résoudre le problème pour trouver la réponse (bien qu'il s'agisse d'anciennes versions de Windows Server): http://blogs.msdn.com/b/rjacobs/archive/2010/06/30/system-web-routing-routetable -not-working-with-iis.aspx pour les serveurs plus récents, accédez à Gestion de l'ordinateur, puis faites défiler jusqu'au rôle Serveur Web et cliquez suradd role services


0

Avec le projet ASP.NET avec C # 4.5, j'ai résolu ce problème en installant l' extension ASP.NET dans Web Platform Installer


0

Encore une chose peut être possible

installer .net framework 4.0 manuellement

Cette solution est pour IIS7 sur la fenêtre 7

cmd ouvert avec les privilèges d'administration

aller dans le répertoire "C: \ Windows \ Microsoft.NET \ Framework \ v4.0.30319"

tapez aspnet_regiis.exe -i

accéder à votre gestionnaire inet en tapant la commande d'exécution "inetmgr"

actualisez votre IIS7

rechargez le site.


0

Je sais que vous avez eu ce problème dans un hôte interne, mais j'avais déjà rencontré un tel problème dans un hôte externe et dans mon cas, il avait sa propre résolution, peut-être que cela pourrait faire gagner du temps à quelqu'un:

En fait, mon site Web a été ARRÊTÉ pour une raison dont je ne suis actuellement pas au courant, pour le vérifier si vous avez le même problème, dans la page principale de WebsitePanel, allez sur Web -> Sites Web puis sélectionnez le nom de domaine de votre site Web dans la liste , après cela dans le côté droit de la page qui vient d'être ouverte, vérifiez si vous voyez le mot STARTED, sinon si vous voyez le mot STOPPED, faites-le recommencer. C'est tout.


0

Je sais que c'est un vieux sujet, mais vous pouvez également obtenir cette erreur (lorsque vous déboguez) si vous avez un dossier nommé de la même manière qu'une route dans un contrôleur.

Par exemple, si vous avez un UserController, avec une route appelée / User et que vous avez ÉGALEMENT un dossier dans votre solution appelé "User" alors IISExpress essaiera de parcourir le dossier au lieu d'afficher votre vue.


0

Après avoir essayé toutes les solutions suggérées ici, j'ai trouvé une autre solution possible: URLScan

L'IIS avait WebDAV désactivé, même dans le web.config de mon application, le gestionnaire et le module de WebDAV ont été supprimés. Les PUT renvoyaient toujours un 403 - Interdit sans aucune entrée de journal dans les journaux IIS. (GET / POST a bien fonctionné).

Il s'avère que l'IIS avait un filtre ISAPI actif (l'URLScan) activé, ce qui empêchait tous les PUT. Après avoir supprimé URLScan, cela a fonctionné pour moi.


0

Ma situation était complètement différente de celle-ci et le message d'erreur 403: Interdit était un peu un hareng rouge.

Si votre fonction Application_Start () dans le module Global.asax essaie d'accéder au web.config et qu'une entrée à laquelle il fait référence n'est pas là, IIS s'étouffe et (pour une raison quelconque) lève le message d'erreur 403: Forbidden.

Vérifiez que vous ne manquez pas une entrée dans le fichier web.config qui tente d'être accessible dans votre module Global.asax.


0

Si vous êtes comme moi et que vous avez une application utilisant NHibernate et que les réponses ci-dessus n'ont pas résolu votre problème.

Vous devriez regarder la chaîne de connexion dans votre application; éventuellement dans le fichier webconfig pour s'assurer qu'il est correct.


-1

J'utilise Identity Impersonate:

<system.web>
    <identity impersonate="true" userName="domain\username" password="password"/>
</system.Web>

Lors de la poussée vers le serveur, vous devez donner au nom d'utilisateur l'accès au Temporary ASP.NETdossier Files afin qu'il puisse lire / écrire / s'exécuter correctement:

C:\Windows\Microsoft.NET\"frameworkversion"\"aspversion"\Temporary ASP.NET Files

Remplacez évidemment "frameworkversion" et "aspversion" par les versions que vous utilisez.


-1

Étape 1: Sélectionnez le site pour lequel l'erreur HTTP est produite dans IIS, puis cliquez sur Exploration de répertoire comme indiqué dans l'image ci-dessous:

Étape 2: Dans la fenêtre de navigation de répertoire dans IIS, cliquez sur Activer dans les actions sur le côté droit comme indiqué dans le diagramme ci-dessous:

La navigation dans l'annuaire est maintenant activée pour votre site Web asp.net, redémarrez simplement l'application Web dans IIS et parcourez le site dans votre navigateur et voyez le résultat.


-1

J'utilise: Win Server 2012 R2 / IIS 8.5 / MVC4 / .Net 4.5

Si aucune des solutions ci-dessus n'a fonctionné, essayez ceci:

Décochez "Précompiler lors de la publication"

Cela m'a donné un coup de pied dans les fesses pendant quelques jours.


@ d-kermott, peut-être que mon [trouver] [( stackoverflow.com/a/31319136/912481 ) serait également utile pour vous?
Kamil Gareev le

-1

J'ai eu ce problème, mais il a été résolu facilement en accédant au gestionnaire des services Internet (IIS), en double-cliquant sur la navigation dans l'annuaire et en cliquant sur Activer.

Dans mon cas, je pouvais accéder directement aux fichiers mais je ne pouvais pas accéder aux dossiers.


-1

J'avais mal saisi l'adresse IP d'un chiffre, ce qui signifiait qu'elle allait à l'un de mes autres serveurs. Très déroutant car vous obtenez une page d'erreur .NET mais de la mauvaise machine!

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.