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