Cóż, myślę, że tytuł jest wystarczająco jasny.Jaka jest różnica między HttpContext.Current.User i Thread.CurrentPrincipal w asp.net?
Odpowiedz
Największą różnicą jest to, że nie muszą być takie same.
Ogólnie rzecz biorąc, HttpContext.Current.User jest użytkownikiem logowania, podczas gdy Thread.CurrentPrincipal jest tożsamością procesu roboczego.
W programie IIS 5.x wątek.CurrentPrincipal jest domyślnie ASPNET. W usługach IIS 6 i nowszych funkcja Thread.CurrentPrincipal domyślnie jest usługą sieciową lub kontem puli aplikacji.
Aby uczynić go złożonym, po włączeniu personifikacji ASP.NET, obie będą takie same, jak użytkownik logowania. :)
Spróbuj przeczytać kilka naprawdę dobrych książek na ten temat i artykułów Microsoft MSDN,
http://msdn.microsoft.com/en-us/library/ms998351.aspx
Kolejna propozycja jest użycie debuggera aby dołączyć do procesu roboczego i sprawdzić te przy starcie. To może dać lepszy wygląd.
Kolejną dużą różnicą jest to, że twój kod nie zawsze ma dostęp do HttpContext. (Na przykład, jeśli masz wszystkie swoje bloki w zespole, które mogą lub nie mogą być używane z aplikacji internetowej), podczas gdy dwa konta użytkowników mogą być różne, jeśli użyjesz Thread.CurrentPrincipal, wtedy twój kod zawsze będzie w stanie uzyskać w tym obiekcie użytkownika bez względu na to, gdzie jesteś w kodzie.