J'ai cette section dans mon web.config:
<system.webServer>
<modules runAllManagedModulesForAllRequests="true" />
<security>
<authentication>
<anonymousAuthentication enabled="true" />
<windowsAuthentication enabled="true" />
</authentication>
</security>
</system.webServer>
IIS7 se bloque et se plaint de la section d'authentification:
Module AnonymousAuthenticationModule
Notification AuthenticateRequest
Gestionnaire StaticFile
Code d'erreur 0x80070021
Erreur de configuration Cette section de configuration ne peut pas être utilisée sur ce chemin. Cela se produit lorsque la section est verrouillée au niveau parent. Le verrouillage est soit par défaut (overrideModeDefault = "Deny"), soit défini explicitement par une balise d'emplacement avec overrideMode = "Deny" ou l'héritage allowOverride = "false".
Config Source
69: <authentication>
70: <anonymousAuthentication enabled="true" />
Donc, la façon habituelle de résoudre ce problème est d'aller dans %windir%\system32\inetsrv\config\applicationHost.config
et déverrouillez la section:
<sectionGroup name="system.webServer">
<sectionGroup name="security">
<section name="access" overrideModeDefault="Deny" />
<section name="applicationDependencies" overrideModeDefault="Deny" />
<sectionGroup name="authentication">
<section name="anonymousAuthentication" overrideModeDefault="Allow" />
<section name="basicAuthentication" overrideModeDefault="Allow" />
<section name="clientCertificateMappingAuthentication" overrideModeDefault="Allow" />
<section name="digestAuthentication" overrideModeDefault="Allow" />
<section name="iisClientCertificateMappingAuthentication" overrideModeDefault="Allow" />
<section name="windowsAuthentication" overrideModeDefault="Allow" />
</sectionGroup>
(alternativement, appcmd unlock config
).
La chose étrange: je l'ai fait et ça continue de se plaindre.
J'ai cherché des emplacements (MVC est le nom de mon site Web qui est la racine de tous les sites que j'utilise):
<location path="MVC" overrideMode="Allow">
<system.webServer overrideMode="Allow">
<security overrideMode="Allow">
<authentication overrideMode="Allow">
<windowsAuthentication enabled="true" />
<anonymousAuthentication enabled="true" />
</authentication>
</security>
</system.webServer>
</location>
Mais ça explose. Je ne comprends pas pourquoi cela se produit. Je ne peux pas le supprimer du web.config, je veux trouver le problème racine.
Existe-t-il un moyen d'obtenir des informations spécifiques de IIS quelle règle me refuse finalement?
Edit: 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 déverrouiller la section là-bas. J'aimerais tout de même savoir s'il existe une meilleure solution car je ne trouve pas le fichier qu'il modifie réellement.
A travaillé ces étapes qui résolvent le problème pour moi:
system.webServer/security/authentication/anonymousAuthentication
system.webServer/security/authentication/windowsAuthentication
Cela a résolu mon erreur sur Windows Server 2012, IIS 8.5. Devrait également fonctionner pour d'autres versions.
.NET Extensibility 4.5
Et ASP>NET 4.5
, Les deux entrées ISAPINET 3.5
, .NET 4.5
, ASP.NET 4.5
Web Server (all)
, Management Tools (IIS Management Console and Management Service)
, Windows
Le verrouillage de la configuration peut se produire à:
Applicationhost.config (chaîne de configuration: MACHINE/WEBROOT/APPHOST)
un fichier Site Web.config (MACHINE/WEBROOT/APPHOST/Nom du site Web)
Tout fichier web.config d'application qui (MACHINE/WEBROOT/APPHOST/Nom du site/Nom de l'application)
Verrouiller une section (section: IIS section de configuration, par exemple <asp>
) vous permet de refuser la possibilité de configurer ces paramètres à quiconque à un niveau inférieur dans la hiérarchie que vous.
L'utilisation de la fonction de délégation de fonctionnalités de l'interface graphique n'est pas mauvaise et fait une chose très similaire à ce que fait AppCMD, sous les couvertures - définit OverrideMode pour une section donnée dans un <location>
tag quel que soit le niveau de configuration sur lequel vous vous concentrez.
APPCMD peut être utilisé pour déverrouiller des fichiers, mais faites attention à l'endroit où il est dit - ce n'est pas aussi intelligent que l'interface graphique à ce sujet.
Ajouter -commit:apphost
à la fin de votre APPCMD UNLOCK
la commande cible Applicationhost.config, qui est le fichier de clé pour l'opération IIS (remplace la métabase des versions antérieures) ; 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'emplacement 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 changé le paramètre à l'aide d'une chaîne de configuration comme l'ensemble ci-dessus. (En plus: vous pouvez toujours cibler uniquement les paramètres dans les sous-sites Web, mais vous engagez sur apphost - il utilise des balises de localisation pour accomplir cela)
Donc, si cela disait (paraphrase de la mémoire) "Modifications apportées à MACHINE/WEBROOT/APPHOST", cela signifierait le niveau supérieur de la hiérarchie IIS.
S'il indique "engagé sur MACHINE/WEBROOT/APPHOST/Dodgy Web Site", cela signifie qu'il a recherché le chemin physique derrière Dodgy Web Site et a écrit un fichier web.config (ou l'a mis à jour) à cet emplacement.
Si vous utilisez IISExpress et Visual Studio 2015, le applicationHost.config
Est stocké dans $(solutionDir).vs\config\applicationhost.config
(grâce à Nime Cloud réponse ).
Modifiez simplement overrideModeDefault="Allow"
Chaque fois que cela est approprié.
<sectionGroup name="security">
<section name="access" overrideModeDefault="Deny" />
<section name="applicationDependencies" overrideModeDefault="Deny" />
<sectionGroup name="authentication">
<section name="anonymousAuthentication" overrideModeDefault="Allow" />
etc...
Essayez dans votre pool d'applications, désactivez la prise en charge des applications 32 bits IIS Manager -> Pools d'applications -> sélectionnez [Votre AppPool] -> Paramètres avancés -> Activer les applications 32 bits - changez-le en ' Faux'