web-dev-qa-db-fra.com

ASP MVC dans IIS 7 résultats dans: Erreur HTTP 403.14 - Interdit

Je développe un ASP projet Web MVC. Maintenant, j'ai une exigence qui me force à me déployer dans un environnement de développement IIS7 (pour vérifier certaines fonctionnalités). Je reçois le message d'erreur mentionné ci-dessus chaque fois que j'essaie de taper l'URL du site Web. (Remarque: machine de développement: Vista Home Premium, IIS7)

Ce que j'ai fait jusqu'à maintenant:

Edité le 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éation d'un dossier c:\websites\dirOfApplication et déploiement à partir de Visual Studio 8 vers ce dossier.

Dans IIS7, vous avez 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, l'erreur ci-dessus est générée (erreur HTTP 403.14 - Interdit - le serveur Web est configuré pour ne pas répertorier le contenu de ce répertoire.)

Je pense que je manque quelque chose mais je ne sais pas quoi! Nous avons 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!

142
savvas sopiadis

Peut-être est-ce utile pour quelqu'un: Après avoir converti mon application en MVC 4 avec .NET Framework 4.5 et installé le cadre sur mon serveur avec IIS 7.0, j'ai rencontré le même message d'erreur 'interdit' mentionné dans la question. J'ai essayé toutes les options décrites ci-dessus sans succès, quand j'ai remarqué le

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

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

MODIFIER:

Bien sûr, la solution ci-dessus fonctionnera, mais c’est 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>
219
Cyril Mestrom

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

Exécutez aspnet_regiis -i. J'ai souvent constaté que vous deviez faire cela 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 Invite de commandes 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 est installé et enregistré, assurez-vous que votre application utilise un pool d'applications défini sur .NET 4.0.

UPDATE: 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 de aspnet_regiis -ir installe la version d'ASP.NET mais ne modifie aucune application Web pour cette version. Vous pouvez également vouloir examiner l'option -iru.

122
Brettski

Moi aussi j'ai couru dans 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.

30
Bogdan Litescu

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

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

Donc, installer ceci a résolu le problème

10
savvas sopiadis

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

1) Accordez la permission nécessaire à l'utilisateur IIS_IUSRS sur IIS Server (cliquez avec le bouton droit sur le site Web, puis sur Modifier les autorisations> Sécurité).

 enter image description here

2) Si vous utilisez .NET Framework 4, assurez-vous que la version .NET Framework est v4.0 sur le Application Pool utilisé par votre site Web. 

 enter image description here

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

7
Murat Yıldız

J'ai eu le même problème. Cet article du support technique de 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-lors-qu'ils-tentent de traiter les extensions-urls-on-iis-7-and-iis-7.5

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

  1. Naviguez jusqu'au nœud suivant: Internet Information Services -> Services World Wide Web -> Fonctionnalités HTTP communes
  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 -> Services World Wide Web -> Fonctionnalités 
  2. Assurez-vous que l'option "Compression de contenu statique" est sélectionnée. Après avoir sélectionné l'une 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 des URL sans extension.

7
Donny V.

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>
    
7
Stefan Michev

Vérifiez également, si vous utilisez x64, que vous avez activé les applications 32 bits dans les paramètres du pool d'applications.

enter image description here

6
David Christiansen

Sur la Décochez la case "Précompiler lors de la publication" - J'obtenais l'erreur 403.14 sur un service Web que je venais d'écrire dans VS2015. Dans les deux cas, j'avais activé "Précompiler pendant la publication". Je l'ai décochée mais j'entendais toujours l'erreur. Dans mon cas, j'avais aussi " Supprimer tous les fichiers existants avant la publication " 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é, ce qui pose problème. Une fois que j'ai supprimé ce fichier, j'étais sur les versions VS2013 et VS2015 de mon service Web.

4
JTTx

J'ai tout essayé ici; rien n'a fonctionné. Le problème se trouvait dans mon fichier Web.config; d'une manière ou d'une autre, la liaison d'assembly était passée du minimum 1 au 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" />
2
codeMonkey

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'était pas enregistré dans IIS. Dans mon cas, je créais un projet MVC 3 et l’hébergeais 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 commande en tant qu'administrateur et tapez la ligne suivante:

32bit (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

2
Vishal sen

Si les principales réponses ne fonctionnent pas, recherchez une configuration nommée PrecompiledApp.config dans 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’est le problème de mon cas puisque j’ai tout essayé en 2 heures et que je l’ai testé à maintes reprises avec cette configuration.

Encore une chose: vous ne pouvez pas utiliser aspnet_regiis dans les versions plus récentes de Windows et IIS, alors essayez

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

Veuillez noter que parfois, une erreur Managed pipeline mode provoquera cette erreur. Il existe deux choix pour sélectionner integrated et classic

2
Joe.wang

J'ai également rencontré la même erreur malgré toutes les solutions fournies pour les raisons suivantes:

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

Je sais que c'est un sujet ancien, mais vous pouvez également obtenir cette erreur (lorsque vous déboguez) si vous avez un dossier portant le même nom qu'un itinéraire dans un contrôleur. 

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

1
MercifulGiraffe

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

1
oyenigun

Aussi une ou plusieurs choses peuvent être possibles

installer .net framework 4.0 manuellement

Cette solution concerne IIS7 sous Windows 7

cmd ouvert avec des privilèges d'administration

accédez au répertoire "C:\Windows\Microsoft.NET\Framework\v4.0.30319".

tapez aspnet_regiis.exe -i

arrivé à votre gestionnaire d'inets en tapant la commande d'exécution "inetmgr" 

rafraîchir votre IIS7

recharger le site. 

0
Iftikhar Ali Ansari

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

WebDAV était désactivé sur IIS, même dans le fichier Web.config de mon application. 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 IIS avait un filtre ISAPI actif (URLScan) activé qui empêchait tous les PUT. Après avoir supprimé URLScan, cela a fonctionné pour moi.

0
Felix Beifuß

Avec un projet ASP.NET avec C # 4.5, j'ai résolu ce problème par installation Extension ASP.NET dans Web Platform Installer

0
Gareev Kamil

J'ai récemment eu cette erreur et j'ai constaté que le problème était dû à la fonctionnalité "Redirection HTTP" non activée sur mon serveur Windows. Ce billet de blog m'a aidé à résoudre le problème du dépannage (même s'il s'agissait 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 de serveur Web et cliquez sur add role services

0
Seph

J'avais ce problème, mais le problème a été facilement résolu en accédant au Gestionnaire des services Internet (IIS), en double-cliquant sur Navigation dans l'annuaire, puis en sélectionnant Activer.

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

0
Scott Izu

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

En fait, mon site Web a été ARRÊTÉ pour une raison dont je ne suis pas au courant pour vérifier si vous rencontrez le même problème. Dans la page principale de WebsitePanel, accédez à Web -> Sites Web, puis sélectionnez le nom de domaine de votre site Web dans la liste. , après cela, dans la partie droite 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 redémarrer. C'est tout.

0
Mohammad lm71

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

Si rien de ce qui précède n'a fonctionné, essayez ceci:

Décochez la case "Précompiler pendant la publication"

Cela m'a donné des coups de pieds dans le dos pendant quelques jours.

0
D. Kermott

Ajoutant encore une autre réponse ici. Si vous utilisez Windows 2016 Server sur IIS 10.0, il se peut que IIS ne soit pas installé correctement. Voici ce que je suggérerais si vous vous retrouviez ici.

  1. Dans Visual Studio, vérifiez la version du framework .NET que vous avez utilisée pour développer l'application. Faites un clic droit sur le projet, la page de propriétés, l'onglet d'application. Cadre cible. Dans mon cas, c'était 4.6.1.

  2. Sur le serveur Web, téléchargez ".net framework 4.6.1" dans Google et accédez à la page de téléchargement de MS qui devrait déterminer correctement la version dont vous avez besoin par l'agent d'utilisateur de votre navigateur. Dans mon cas, c'était X64.

  3. Exécutez le programme d'installation. Notez que vous pouvez le faire en toute sécurité, même si vous pensez que cela existe déjà. Il dira "déjà installé" si c'est le cas.

Remarque: Vous devez maintenant vous assurer qu'il est correctement "activé" en tant que fonctionnalité Windows. Vous devez également vérifier que les composants ASP.NET IIS sont correctement installés et activés.

  1. De nouveau sur le serveur Web, accédez au Gestionnaire de serveur, ajoutez des rôles et des fonctionnalités, puis choisissez un rôle ou des fonctionnalités. Puis cliquez sur Suivant.

  2. Assurez-vous que le serveur local est sélectionné dans l'onglet du serveur de destination, puis cliquez sur suivant.

  3. Dans l'onglet Rôles du serveur, développez Serveur Web IIS et Développement d'applications. J'ai tout noté sauf les protocoles côté serveur et Websocket.

  4. Sous Outils de gestion, j'ai choisi d'activer tout (y compris IIS 6 MMC) en raison de certaines fonctionnalités héritées que je souhaitais, mais c'est un autre article.

Aucun redémarrage n'était requis dans mon cas. J'espère que ça aide quelqu'un.

0
douglas.kirschman

J'avais mal saisi l'adresse IP d'un chiffre, ce qui signifiait que l'adresse allait à l'un de mes autres serveurs. Très déroutant lorsque vous obtenez une page d'erreur .NET mais à partir du mauvais ordinateur!

0
NickG

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

0
eitanpo

J'ai utilisé Identity Impersonate:

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

Lorsque vous appuyez sur le serveur, vous devez donner au nom d'utilisateur l'accès au dossier Temporary ASP.NET Files afin qu'il puisse lire/écrire/exécuter correctement:

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

Évidemment, remplacez "frameworkversion" et "aspversion" par les versions que vous utilisez. 

0
dalemac