Out of memory exception usando el ReportViewer en modo local

Si estas usando el control Report Viewer en una aplicación Web en modo local y el reporte que estas utilizando carga grandes cantidades de datos o tiene muchas expresiones. Debes considerar que estos escenarios no son recomendados en Local Mode. Ya que por diseño el comportamiento del Report Viewer aloja objetos en variables de sesion, cada vez que el visor de reportes es refrescado. Provocando que tarde o temprano tengas un System.OutOfMemoryException.

Si ya estas enfrascado en el problema, lo ideal seria migrar tus reportes a Reporting Services o usar otro reporteador. Pero en el inter el siguiente Workaround me ha dado resultados.

NOTA: Puede no funcionar para todos los escenarios.

En el page_load event, agrega lo siguiente,

VB.NET

If Session.Count > 0 Then

For i As Integer = 0 To Session.Count – 1

If Session(i).GetType().ToString() = “Microsoft.Reporting.WebForms.ReportHierarchy” Then

Session.RemoveAt(i)

End If

Next

End If

C#,

if(Session.Count > 0)

{

for (int i = 0; i < Session.Count; i++)

{

if (Session[i].GetType().ToString() == “Microsoft.Reporting.WebForms.ReportHierarchy”)

{

Session.RemoveAt(i);

}

}

}

Fuente: http://blogs.msdn.com/b/selvar/archive/2008/07/18/getting-system-outofmemoryexception-when-using-reportviewer-contol-in-local-mode.aspx

CSS Selectors

Los selectores en css, son reglas con las que puedes aplicar estilos a elementos en un documento html.

1.- Tu puedes aplicar estilos a cualquier elemento usando el “*”.

2.- Tu puedes aplicar estilos a todos los elementos del mismo tipo indicando nombre del tipo del mismo.

ej:
div {}  <- Aplica el estilo a todos los divs
ol {} <- Aplica el estilo a todos los ol

3.- Tu puedes aplicar un estilo a todos los elementos que cumplen con un selector que están dentro de otro selector independientemente de los niveles de profundidad separándolos por un espacio.

ej:
div ol {} <- Aplica el estilo a todos los ol dentro de un div, independientemente de la profundidad. En este caso si un div tuviera un hijo que fuera otro div y dentro de el existiera un ol. Le aplicaría el estilo.

div > ol {} <- Aplica el estilo a todos los ol dentro que son hijos directos de div, independientemente de la profundidad. En este caso ol deberá ser hijo directo de ol.

Si quieres mas información de selectores css, revisa la siguiente liga:

http://www.w3.org/TR/CSS2/selector.html