¿Cuál es la diferencia entre Session y HttpContext.Current.Session objeto?Diferencia entre Session y HttpContext.Current.Session
Respuesta
No hay diferencia.
El getter para Page.Session devuelve la sesión de contexto.
Nada. Session
solo apunta al HttpContext.Current.Session
.
Un poco tarde aquí, pero esto es algo que acabo de descubrir.
@Phillipe Leybaert y @CSharpAtl son incorrectos. HttpApplication
's Session
propiedad muestra un comportamiento diferente que el de la propiedad HttpContext.Current.Session
. Ambos devolverán una referencia a la misma instancia HttpSessionState
si está disponible. Difieren en lo que hacen cuando no hay ninguna instancia de HttpSessionState
disponible para la solicitud actual.
not all HttpHandler
s proporcionan el estado de la sesión. Para hacerlo, el HttpHandler
debe implementar [una o ambas?] Las interfaces de marcador IRequiresSessionState
o IReadOnlySessionState
.
HttpContext.Current.Session
simplemente devuelve null
si no hay sesión disponible.
aplicación de la propiedad Session
El HttpApplication
's lanza una HttpException
con el mensaje Session state is not available in this context.
en lugar de devolver una referencia null
.
Algunos ejemplos de HttpHandler
que no implementan sesión son los controladores predeterminados para recursos normalmente estáticos, como archivos de imagen y CSS. Cualquier referencia a la propiedad HttpApplication
Session
en tales casos (como en los controladores de eventos global.asax
) dará como resultado un HttpException
.
No hace falta decir que el inesperado HttpException
proporciona una WTF? momento si no lo estás esperando.
El Session
propiedad de la clase HttpApplication
se implementa por lo tanto (de reflector):
[Browsable(false), DesignerSerializationVisibility(DesignerSerializationVisibility.Hidden)]
public HttpSessionState Session
{
get
{
HttpSessionState session = null;
if (this._session != null)
{
session = this._session;
}
else if (this._context != null)
{
session = this._context.Session;
}
if (session == null)
{
throw new HttpException(SR.GetString("Session_not_available"));
}
return session;
}
}
Gracias por esforzarse para completar una mejor respuesta. – nicodemus13
No hay problema. ¿Acabo de tener una WTF bastante molesta? momento que tomó un tiempo para resolverlo. Pensé en documentarlo para que alguien más no tuviese que perder el tiempo averiguando qué estaba pasando. –
- 1. Cuál es la diferencia entre estos dos HttpContext.Current.Session y Session - asp.net 4.0
- 2. ¿Cuál es la diferencia entre HttpRuntime.Cache y Session?
- 3. ¿Cuál es la diferencia entre StatelessSession y Session en NHibernate?
- 4. HttpContext.Current.Session es nulo
- 5. ¿Cuál es la diferencia entre Session.Add ("clave", valor) y Session ["key"] = value?
- 6. ¿Cuál es la diferencia entre Session y ViewData en Asp.net-MVC?
- 7. .Net - ¿Cuál es la diferencia entre una Session Facade y Business Delegate?
- 8. WCF Silverlight + + HttpContext.Current.Session es nulo
- 9. ASP.NET Session y LINQ
- 10. ¿Por qué HttpContext.Current.Session es nulo en Global.asax?
- 11. MySQL: diferencia entre ', `,' y"
- 12. Diferencia entre objeto y *?
- 13. Diferencia entre. y #
- 14. ¿Diferencia entre == y caso?
- 15. La diferencia entre $ * y $ @
- 16. Diferencia entre & y &
- 17. ASP.NET + C# HttpContext.Current.Session es nulo (Dentro WebService)
- 18. VBA: Diferencia entre y y +
- 19. SignalR y HttpContext/Session
- 20. Rails v2.3: Diferencia entre sesión y cookies
- 21. HttpContext.Current.Session es nulo cuando se enrutan solicitudes
- 22. Diferencia entre -Wconversion entre gcc y g ++
- 23. Session vs singleton pattern
- 24. ¿Cuál es la diferencia entre persist() y merge() en Hibernate?
- 25. Diferencia entre subprocess.Popen y os.system
- 26. Diferencia entre decimal y decimal
- 27. ¿Diferencia entre trazo y relleno?
- 28. Diferencia entre interrupción y eventos
- 29. Diferencia entre netTcpContextBinding y netTcpBinding
- 30. ¿Diferencia entre brújula y sass?
Cabe aclarar que cuando se dice 'sesión', se está refiriendo a System.Web.UI.Page.Session . El objeto Session está disponible dentro del contexto de la página ASP.NET. – Llyle