Désactivation de l'authentification ASP.Net WebForms pour un sous-répertoire

J'ai une grande enterprise application contenant à la fois des WebForms et MVC pages. Elle dispose de l'authentification et de l'autorisation de paramètres que je ne veux pas changer.

Les Formulaires d'authentification est configuré dans le web.config:

 <authentication mode="Forms">
  <forms blah... blah... blah />
 </authentication>

 <authorization>
  <deny users="?" />
 </authorization>

Assez standard jusqu'à présent. J'ai un service REST qui est partie de cette grande application, et je veux utiliser l'authentification HTTP plutôt que pour ce seul service.

Ainsi, lorsqu'un utilisateur tente d'obtenir des données JSON en provenance du RESTE du service, il renvoie une erreur HTTP 401 statut et un WWW-Authenticate en-tête. S'ils répondent correctement avec formée HTTP Authorization réponse il leur permet dans les.

Le problème est que WebForms remplace ce à un niveau faible - si vous revenez 401 (non autorisé), il l'emporte avec un 302 (redirection vers la page de login). C'est bien dans le navigateur, mais inutile pour un service REST.

Je veux désactiver le paramètre d'authentification web.config, en remplaçant le "reste" dossier:

 <location path="rest">
  <system.web>
   <authentication mode="None" />
   <authorization><allow users="?" /></authorization>
  </system.web>
 </location>

La autorisation bits fonctionne très bien, mais le authentification ligne (<authentication mode="None" />) provoque une exception:

C'est une erreur d'utiliser une section enregistré comme allowDefinition='MachineToApplication" au-delà du niveau de l'application.

Je suis cette configuration au niveau de l'application que - c'est dans la racine web.config - et que l'erreur est pour le web.les configs dans les sous-répertoires.

Comment puis-je remplacer la authentification de sorte que tout le reste du site utilise des Formulaires d'authentification et de ce répertoire utilise aucun?

Ceci est similaire à une autre question: 401 code de réponse pour les demandes avec json ASP.NET MVCmais je ne suis pas à la recherche pour la même solution, je ne veux pas seulement de supprimer les Formulaires d'authentification et d'ajout de nouveau le code personnalisé à l'échelle mondiale, il y a beaucoup trop de risques et de travail. Je veux changer juste l'un répertoire dans le répertoire de configuration.

Mise à jour

Je veux mettre en place une application web unique et que je veux que tous les Formulaires des pages et des vues MVC pour utiliser l'authentification de Formulaires web. J'en veux un répertoire pour utiliser l'authentification HTTP de base.

Noter que je parle d'authentification, pas d'autorisation. Je veux les appels RESTE à venir avec le nom d'utilisateur & mot de passe dans un en-tête HTTP, et je veux WebForm & MVC pages à venir avec le cookie d'authentification de .Net - dans les deux cas, l'autorisation est fait à l'encontre de notre DB.

Je ne veux pas réécrire les Formulaires d'authentification et de rouler mes propres cookies - il semble ridicule, que c'est la seule façon d'ajouter une HTTP autorisé RESTE une application.

Je ne peux pas ajouter une application ou un répertoire virtuel - il faut que ce soit comme une application.

source d'informationauteur Keith