2009-12-03 24 views

Odpowiedz

12

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.

2

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.