Configuration du mode d'authentification des sous-répertoires dans les applications hébergées sous le site racine
Sur ma machine locale, je travaille sur plusieurs sites web et de les exécuter sous IIS sous un "Défaut" du site web. De cette façon, je peux accéder aux sites par le biais de ce type d'URL: http://localhost/App1/. Voici la structure:
LocalDev (site) App1 (application) App2 (application) App3 (application)
Le problème que je rencontre est que, dans App1, je vais essayer d'activer l'authentification Windows sur un sous-répertoire de App1, comme ceci:
<configuration>
<location path="internal">
<system.web>
<authentication mode="Windows"/>
<authorization>
<allow users="*"/>
</authorization>
</system.web>
</location>
</configuration>
Malheureusement, lorsque j'essaye d'accéder à http://localhost/App1/internal/url.aspxj'obtiens cette erreur:
C'est une erreur d'utiliser une section enregistré comme allowDefinition='MachineToApplication" au-delà du niveau de l'application. Cette erreur peut être causée par un répertoire virtuel de ne pas être configuré comme une application dans IIS.
App1
est définie comme une application, pas un répertoire virtuel. J'ai essayé de changer ma machine.config pour permettre le changement de la section authentification de n'importe où:
<configuration>
<configSections>
<sectionGroup name="system.web" type="System.Web.Configuration.SystemWebSectionGroup, System.Web, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
<section name="authentication" type="System.Web.Configuration.AuthenticationSection, System.Web, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" allowDefinition="Everywhere"/>
</sectionGroup>
</configSections>
</configuration>
Que dois-je faire pour permettre à mes sites à créer leurs propres modes d'authentification?
source d'informationauteur Jacob
Vous devez vous connecter pour publier un commentaire.
Vous devez activer l'authentification Windows au niveau de l'application dans le Web.config, puis définir davantage d'autorisation au niveau du dossier, permettant à tous les utilisateurs à la racine et en refusant tout accès non authentifié pour le
internal
dossier.Dans IIS, assurez-vous que les deux l'Authentification Anonyme et l'Authentification Windows sont activés pour l'application. Ensuite, modifiez votre site Web.config comme suit:
Vous ne pouvez pas modifier le mode d'Authentification dans un sous-répertoire. Uniquement d'Applications pouvez définir ce paramètre, qui s'applique à l'ensemble de l'application. L'emplacement de l'élément n'est utilisé que dans des sous-répertoires d'autorisation de changement, pas de paramètres d'authentification.
Vous avez besoin pour créer les sous-répertoires comme les applications Web dans IIS.
Si vous dites à l'enfant sous-répertoire est en fait déjà une application web dans IIS (l'erreur suggère ce n'est pas le cas), alors vous devez désactiver l'héritage. Cela n'a rien à voir avec le fait que vous avez un site web.config à la racine. Si non, ça veut simplement dire que c'est à l'aide de l'ordinateur par défaut paramètres de configuration.
Vous pouvez désactiver l'héritage par l'ajout d'un site web.config à la racine, avec l'élément suivant d'emballage de votre système.web.
J'ai rencontré cette erreur dans l'un des deux scénarios, qui étaient tous deux dus aux applications d'être sous-répertoires de l'ensemble du "par Défaut" de l'application:
Sous-Répertoires doivent également être une Application de travail
Vous ai déjà noté que le répertoire est signalé comme une application, toutefois, pour être complet, vous pouvez vérifier que l'application fonctionne également, est capable d'exécuter des scripts et de l'autorisation pour les fichiers dans les répertoires.
Web imbriqué.les fichiers de configuration
C'est le problème que je pense que vous avez fait l'expérience:
Assurer que votre hiérarchie de web.les fichiers de configuration, y compris le "Défaut" de l'application au-dessus de votre développement d'applicationsne sont pas interférer les uns avec les autres. Rappelez-vous que comme un sous-répertoire de "par Défaut" de votre application peut encore être affecté par les paramètres dans le "Défaut" de l'application ci-dessus.
Je vois ce problème de temps en temps et il a toujours été que le serveur n'est pas le reconnaître comme un web configuré. Ce que vous pouvez essayer si possible est de supprimer l'application et puis les convertir chaque sous-répertoire de retour à sa propre demande.
Cela a toujours fixe pour moi. Le Double et le triple de vérifier que les sous-répertoires sont définis comme des applications.
Également d'éviter d'autres problèmes, car la configuration de l'authentification Windows vérifiez le NTLM vs les paramètres Kerberos. Habituellement, c'est un message d'erreur différent ou tout simplement de ne pas s'authentifier correctement, mais si c'est un environnement internet à la place d'un environnement intranet, vous aurez plus de chances de désactiver Kerberos.
Aussi assurez-vous que vous avez vérifié que l'Authentification Windows est activé. http://technet.microsoft.com/en-us/library/cc754628(WS.10).aspx
Vous pouvez activer et désactiver Kerberos sous les Paramètres Avancés dans l'Authentification Windows.
Vous pouvez résoudre ce problème en exécutant les applications que les Répertoires Virtuels, ils seront ensuite séparés des processus dans le pool d'applications ou vous pouvez en avoir un pour chaque application, encore que vous les répertoires etc va encore être accessibles de la même manière.
Lire la suite ici: http://learn.iis.net/page.aspx/150/understanding-sites-applications-and-virtual-directories-on-iis-7/
Je pense que vous aurez besoin d'un site web.fichier de configuration dans le répertoire de racine, même si son plus ou moins vide et l'ensemble de la allowSubDirConfig de vrai.