2

Notre code repose sur la vérification de la valeur Context.User.Identity dans la méthode Global.asax Application_AuthenticateRequest (...) pour récupérer des informations sur l'utilisateur connecté . Cela fonctionne très bien en mode classique, mais lorsque j'applique IIS pour utiliser le Pipeline intégré "Context.User" revient à zéro, mais seulement par intermittence. Des idées pourquoi?IIS7 Itegrated Mode Pipeline: Context.User est null par intermittence pour Windows Auth

J'ai < authentification mode = "Windows"> et seulement Authentification Windows activé dans le répertoire virtuel.

+0

Je recommande de vérifier l'URL pour ces demandes. Peut-être sont-ils pour des ressources rendues dynamiquement à quelque chose comme WebResource.axd rendu automatiquement par le framework et contourne ainsi le système d'authentification? – David

Répondre

4

Le mode intégré signifie que les événements de pipeline d'ASP.NET s'exécutent en même temps que le pipeline IIS, ce qui signifie que: 1) En mode classique - AuthenticateRequest dans ASP.NET s'exécute après qu'IIS a déjà exécuté Authentification (en utilisant Windows auth peut-être ou de base, etc) et ainsi vous obtiendrez l'identité de l'utilisateur définie. 2) Dans IntegratedMode - AuthenticateRequest s'exécutera en même temps dans les deux cas, ce qui entraînera une valeur nulle à cet endroit. Vous devriez envisager d'utiliser PostAuthenticateRequest si vous voulez obtenir une identité d'utilisateur de manière fiable (bien sûr, à condition qu'un module d'authentification soit activé)