¿Cómo saber el tamaño de la sesión en ASP.NET desde la aplicación web?¿Cómo saber el tamaño de la sesión en ASP.NET desde la aplicación web?
Respuesta
Si usted está tratando de obtener el tamaño de la sesión durante el tiempo de ejecución y no en el seguimiento de depuración, es posible que desee probar algo como esto:
long totalSessionBytes = 0;
BinaryFormatter b = new BinaryFormatter();
MemoryStream m;
foreach(var obj in Session)
{
m = new MemoryStream();
b.Serialize(m, obj);
totalSessionBytes += m.Length;
}
(Inspirado por http://www.codeproject.com/KB/session/exploresessionandcache.aspx)
Creo que puede encontrar esa información agregando Trace = "true" a la directiva de la página de una página aspx. Luego, cuando se carga la página, puede ver una gran cantidad de detalles sobre la solicitud de la página, incluida la información de la sesión, creo.
También puede habilitar el seguimiento en toda su aplicación agregando una línea a su archivo web.config. Algo así como:
<trace enabled="true" requestLimit="10" pageOutput="true" traceMode="SortByTime"
localOnly="true"/>
El código en la respuesta anterior me sigue dando el mismo número. Aquí está el código que finalmente funcionó para mí:
private void ShowSessionSize()
{
Page.Trace.Write("Session Trace Info");
long totalSessionBytes = 0;
System.Runtime.Serialization.Formatters.Binary.BinaryFormatter b =
new System.Runtime.Serialization.Formatters.Binary.BinaryFormatter();
System.IO.MemoryStream m;
foreach (string key in Session)
{
var obj = Session[key];
m = new System.IO.MemoryStream();
b.Serialize(m, obj);
totalSessionBytes += m.Length;
Page.Trace.Write(String.Format("{0}: {1:n} kb", key, m.Length/1024));
}
Page.Trace.Write(String.Format("Total Size of Session Data: {0:n} kb",
totalSessionBytes/1024));
}
- 1. Compartiendo sesión entre el servicio web y la aplicación asp.net
- 2. Inicio de sesión único con la aplicación web ASP.Net
- 3. ASP.NET: ¿Cómo acceder a la sesión desde el controlador?
- 4. Solución de caché/sesión distribuida para la aplicación web ASP.NET
- 5. Llamando al servicio web ASP.net desde la aplicación C#
- 6. variables de sesión timeout en la aplicación asp.net
- 7. Cómo definir una variable global en la aplicación web ASP.net
- 8. Limitación de tamaño de sesión ASP.NET
- 9. Implementación de la aplicación web Asp.net MVC
- 10. Cómo capturar imágenes desde la cámara web cliente en asp.net
- 11. ASP.NET MVC: prácticas recomendadas para mantener el estado de la sesión en una aplicación tipo asistente
- 12. Autenticación de la API web de ASP.NET
- 13. ¿Cómo funciona la sesión en asp.net?
- 14. ¿Cómo saber el tamaño de la cadena en bytes?
- 15. Despliegue de la aplicación web ASP.NET
- 16. datos de la sesión entre las aplicaciones web ASP.NET
- 17. ¿Cómo precompilar la aplicación web ASP.NET de TeamCity?
- 18. Alojar aplicación web ASP.Net y consumir desde otra aplicación MVC
- 19. Cómo determinar si la aplicación es la aplicación web
- 20. Cómo llamar asincrónicamente un servicio web desde una aplicación ASP.NET?
- 21. cómo acceder a la sesión en el modelo asp.net mvc
- 22. Cómo ejecutar un EXE desde la página web (asp.net)
- 23. Buscar pérdida de memoria en la aplicación web ASP.NET
- 24. Arquitectura para la nueva aplicación web ASP.NET
- 25. Variable de sesión en la aplicación WCF
- 26. Autenticación del servicio web ASP.NET desde una aplicación para iPhone
- 27. Problemas al implementar la aplicación web asp.net
- 28. Inicie la página web desde mi aplicación
- 29. Cómo pasar el valor de la sesión a otra aplicación web/proyecto en java
- 30. ASP.NET MVC Aplicación web vs Aplicación web ASP.NET
Gracias. Eso era lo que necesitaba. – GrZeCh
Necesitaba hacer los siguientes cambios: long totalSessionBytes = 0; ya que m.Length devuelve un largo. ¡Pero aparte de eso, es una buena pieza concisa de código! El ciclo también puede ser foreach. ;-) – Oliver
@Oliver Gracias por los comentarios. Hice los ajustes que sugeriste. Se ve un poco mejor ahora. – ddc0660