différence entre http.contexte.de l'utilisateur et du fil.currentprincipal et quand les utiliser?
Je viens récemment d'un problème de l'exécution d'une asp.net application web sous visual studio 2008. Je reçois le message d'erreur "type n'est pas résolu pour les membres...customUserPrincipal'. Suivi des différents groupes de discussion, il semble qu'il y ait un problème avec Visual Studio de du serveur web lorsque vous affectez une entité personnalisée contre le Thread.CurrentPrincipal.
Dans mon code, j'utilise maintenant...
HttpContext.Current.User = myCustomPrincipal
//Thread.CurrentPrincipal = myCustomPrincipal
Je suis heureux que j'ai obtenu l'erreur de la route, mais il pose la question "Quelle est la différence entre ces deux méthodes de configuration principal?". Il y a d'autres stackoverflow questions liées aux différences mais ils ne tombent pas dans les détails de ces deux approches.
Je n'ai trouver un alléchant post qui a été la suivante grandiose commentaire, mais aucune explication pour sauvegarder ses affirmations...
Utilisation HttpConext.Actuel.Utilisateur pour toutes les
web (ASPX/ASMX) des applications.Utiliser Thread.CurrentPrincipal pour tous
d'autres applications comme des winForms,
la console de service windows et le
des applications.
De vous security/dot.net gourous de jeter un peu de lumière sur ce sujet?
Vous devez vous connecter pour publier un commentaire.
En vertu de l'un des formulaires de demande je crois
Thread.CurrentPrincipal
sera la principale personne qui exécute le processus de travail (Thread).HttpContext.Current.User
sera l'actuel connecté sur le web de l'utilisateur.Dans le cas de formes/application wpf, cela fait du sens parce que l'utilisateur de l'exécution de la demande est celui qui vous intéresse.
Êtes-vous essayer de se faire passer pour le processus de travail ou de l'utilisateur connecté?
La première chose que l'objet HttpApplication lorsqu'il acquiert un thread est de mettre le thread principal de l'HttpContext principal. Cela se synchronise les directeurs d'école.
Si, toutefois, vous allez définir le Thread principal plus tard, le HttpApplication en interne a encore un autre principal fixé pour le contexte de l'utilisateur. C'est pourquoi vous devez toujours définir à travers le HttpContext.
(Si vous prenez un coup d'oeil dans le Réflecteur, vous pouvez voir le code complexe qui s'exécute lorsque vous faites un "jeu" à la HttpContext.L'utilisateur qu'il fait beaucoup des trucs internes avec IIS pour configurer correctement le principal.)
N'cet article l'expliquer?
http://www.hanselman.com/blog/CommentView.aspx?guid=22c42b73-4004-40ce-8af9-47f1b9b434ed
Voici un extrait: