Retroalimentación en Visual Studio .NET

El sitio de soporte de Raúl Guerrero

Out of memory exception usando el ReportViewer en modo local

October20

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

posted under ASP.NET

Email will not be published

Website example

Your Comment: