Pregunta

¿Cómo averiguar el tamaño de la sesión en ASP.NET desde la aplicación web?

¿Fue útil?

Solución

Si está tratando de obtener el tamaño de la sesión durante el tiempo de ejecución en lugar de en el seguimiento de depuración, puede intentar 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 )

Otros consejos

El código en la respuesta anterior me dio 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));
}

Creo que puede encontrar esa información agregando Trace = " true " a la directiva de 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 rastreo 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"/>
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top