2009-12-03 15 views

Respuesta

12

La mayor diferencia es que no tienen que ser lo mismo.

En general, HttpContext.Current.User es el usuario de inicio de sesión, mientras que Thread.CurrentPrincipal es la identidad del proceso de trabajo.

En IIS 5.x, Thread.CurrentPrincipal de forma predeterminada es ASPNET. En IIS 6 y superior, Thread.CurrentPrincipal de forma predeterminada es Servicio de red o cuenta del grupo de aplicaciones.

Para hacerlo complejo, si habilita la suplantación ASP.NET, ambos serán los mismos que el usuario de inicio de sesión. :)

tratar de leer algunos libros muy buenos sobre este tema y artículos de Microsoft MSDN,

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

Otra sugerencia es usar un depurador para insertarse en el proceso de trabajo y comprobar que están en tiempo de ejecución. Eso puede darle una mejor vista.

2

Otra gran diferencia es que su código no siempre tiene acceso al HttpContext. (Por ejemplo, si tiene todo su BL en un ensamblaje que puede o no puede ser utilizado desde una aplicación web) Si bien las dos cuentas de usuario pueden ser diferentes, si usa el Thread.CurrentPrincipal, entonces su código siempre podrá obtener en ese objeto de usuario sin importar dónde se encuentre en su código.

Cuestiones relacionadas