71 votes

IIS se plaint d'une section verrouillée - comment puis-je savoir où elle est verrouillée?

J'ai cette section dans mon web.config :

IIS7 plante et se plaint de la section d'authentification :

Module AnonymousAuthenticationModule
Notification AuthenticateRequest
Handler StaticFile
Error Code 0x80070021
Config Error Cette section de configuration ne peut pas être utilisée dans ce chemin. Cela se produit lorsque la section est verrouillée à un niveau parent. Le verrouillage se fait soit par défaut (overrideModeDefault="Deny"), soit défini explicitement par une balise de localisation avec overrideMode="Deny" ou l'ancienne allowOverride="false".

Config Source  
   69:  
   70:    

La solution habituelle est d'aller dans %windir%\system32\inetsrv\config\applicationHost.config et de déverrouiller la section :

``

(ou alternativement, appcmd unlock config).

La chose étrange : j'ai fait ça et ça se plaint toujours.

J'ai cherché des Locations (MVC est le nom de mon site web qui est à la racine de tous les sites que j'utilise) :

Mais ça explose toujours. Je suis perplexe quant à la raison de cela. Je ne peux pas le supprimer du web.config, je veux trouver le problème principal.

Y a-t-il un moyen d'obtenir des informations spécifiques de l'IIS sur quelle règle me refuse finalement l'accès ?

Édition : J'ai pu résoudre ce problème en utilisant la console de gestion IIS7 en allant à la racine même (ma machine) et en cliquant sur "Modifier la configuration" et en déverrouillant la section. Néanmoins, j'aimerais savoir s'il existe une meilleure méthode puisque je ne trouve pas le fichier qu'il modifie réellement.

``

0 votes

De mémoire, il y a normalement une section dans le 500.19 qui vous indique quel fichier à quel emplacement pose problème, en bas (je pense)

1 votes

Cela a été très bien répondu sur SO

109voto

tomfanning Points 3248

J'ai suivi ces étapes qui ont résolu le problème pour moi :

  1. Ouvrir le Gestionnaire IIS
  2. Cliquer sur le nom du serveur dans l'arborescence à gauche
  3. Volet de droite, section Gestion, double cliquer sur Configuration Editor
  4. En haut, choisir la section system.webServer/security/authentication/anonymousAuthentication
  5. Volet de droite, cliquer sur Déverrouiller la section
  6. En haut, choisir la section system.webServer/security/authentication/windowsAuthentication
  7. Volet de droite, cliquer sur Déverrouiller la section

2 votes

Est-ce qu'il y a un équivalent en PowerShell? J'aimerais pouvoir scripter cela.

0 votes

Si vous en trouvez un, n'hésitez pas à le poster :)

0 votes

Je vais, j'espérais que quelqu'un d'autre savait déjà comment.

18voto

Cela a résolu mon erreur sur Windows Server 2012, IIS 8.5. Devrait fonctionner pour d'autres versions également.

  1. Allez dans Gestionnaire de serveur, cliquez sur Ajouter des rôles et fonctionnalités
  2. Dans la section des rôles, choisissez: Serveur Web
  3. Sous la sous-section Sécurité, choisissez tout (j'ai exclu digest, restrictions IP et autorisation d'URL car nous ne les utilisons pas)
  4. Dans le Développement d'applications, choisissez .NET Extensibility 4.5 et ASP.NET 4.5, les deux entrées ISAPI
  5. Dans la section Fonctionnalités, choisissez: NET 3.5, .NET 4.5, ASP.NET 4.5
  6. Dans la section Serveur Web, choisissez: Serveur Web (tous), Outils de gestion (Console de gestion IIS et Service de gestion), Windows

8voto

TristanK Points 8893

Le verrouillage de la configuration peut se produire à :

  1. Applicationhost.config (chaîne de configuration : MACHINE/WEBROOT/APPHOST)

  2. un fichier de configuration Web.config de Site (MACHINE/WEBROOT/APPHOST/Nom du Site Web)

  3. Tout fichier de configuration web App qui (MACHINE/WEBROOT/APPHOST/Nom du Site/Nom de l'Application)

Verrouiller une section (section : section de configuration IIS, par ex. ) vous permet de refuser la possibilité de configurer ces paramètres à quiconque à un niveau inférieur dans la hiérarchie que vous.

Utiliser l'option de délégation de fonctionnalités de l'interface graphique n'est pas mal, et fait à peu près la même chose que ce que fait AppCMD, sous-jacent - définir OverrideMode pour une section donnée dans une balise à quelque niveau de configuration que vous vous concentrez.

APPCMD peut être utilisé pour déverrouiller des fichiers, mais faites attention à l'endroit où il dit qu'il le fait - il n'est pas aussi intelligent que l'interface graphique à ce sujet.

Ajouter -commit:apphost à la fin de votre commande APPCMD UNLOCK cible Applicationhost.config, qui est le fichier clé pour le fonctionnement de IIS (remplace le métabase des versions précédentes ; stocke tous les paramètres centralisés mais autorise les remplacements (si vous le faites) dans les fichiers web.config).

Sans -commit:apphost, APPCMD ciblera l'endroit logique le plus proche pour un fichier web.config - que ce soit au niveau du site ou de l'application, et indiquera qu'il a modifié le paramètre en utilisant une chaîne de configuration comme celle définie ci-dessus. (Note : vous pouvez toujours cibler juste les paramètres dans les sous-sites web, mais les valider à apphost - il utilise des balises de localisation pour accomplir cela)

Donc si cela dit (en résumé) "Modifications validées pour MACHINE/WEBROOT/APPHOST", cela signifierait le niveau supérieur de la hiérarchie de IIS.

Si cela dit "validé pour MACHINE/WEBROOT/APPHOST/Nom du Site Web douteux", cela signifierait qu'il a cherché le chemin physique derrière le Site Web douteux, et a écrit un fichier web.config (ou l'a mis à jour) à cet emplacement.

8voto

Yoshi Points 1023

Si vous utilisez IISExpress et Visual Studio 2015, le applicationHost.config est stocké dans $(solutionDir).vs\config\applicationhost.config (grâce à la réponse de Nime Cloud sur réponse).

Changez simplement overrideModeDefault="Allow" partout où c'est approprié.

0 votes

Résolu mon problème

1voto

jaywon Points 3820

Essayez dans votre pool d'applications, désactivez le support des applications 32 bits Gestionnaire IIS -> Pools d'applications -> sélectionnez [Votre pool d'applications] -> Paramètres avancés -> Activer les applications 32 bits - changez-le en 'Faux'

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X