2009-12-03 4 views

Répondre

12

La plus grande différence est qu'ils ne doivent pas être identiques.

De façon générale, HttpContext.Current.User est l'utilisateur d'ouverture de session alors que Thread.CurrentPrincipal est l'identité du processus de travail.

Sur IIS 5.x, Thread.CurrentPrincipal est ASPNET par défaut. Sur IIS 6 et supérieur, Thread.CurrentPrincipal est par défaut Service réseau ou compte de pool d'applications. Pour rendre cela complexe, si vous activez l'emprunt d'identité ASP.NET, les deux seront identiques à l'utilisateur d'ouverture de session. :)

Essayez de lire quelques très bons livres sur ce sujet et Microsoft MSDN articles,

http://msdn.microsoft.com/en-us/library/ms998351.aspx

Une autre suggestion est d'utiliser un débogueur pour attacher au processus de travail et vérifier les lors de l'exécution. Cela peut vous donner un meilleur aperçu.

2

Une autre grande différence est que votre code n'a pas toujours accès au HttpContext. (Par exemple, si vous avez tous vos BL dans un assembly qui peut ou peut ne pas être utilisé à partir d'une application Web) Bien qu'ils puissent être différents, si vous utilisez Thread.CurrentPrincipal, votre code sera toujours capable d'obtenir à cet objet utilisateur, peu importe où vous êtes dans votre code.

Questions connexes