2010-01-18 10 views
5

Por lo tanto, estoy jugando para obtener el HTML de una página ASP.Net estándar. He anulado el método Render, así como:¿Invalidar el procesamiento de un límite de tamaño de página/StreamReader?

protected override void Render(HtmlTextWriter writer) 
{ 
    MemoryStream memoryStream = new MemoryStream(); 

    try 
    { 
     using (StreamWriter streamWriter = new StreamWriter(memoryStream)) 
     { 
      var textWriter = new HtmlTextWriter(streamWriter); 
      base.Render(textWriter); 
      memoryStream.Position = 0; 
      using (StreamReader reader = new StreamReader(memoryStream)) 
      { 
       var text = reader.ReadToEnd(); 
       Response.Write(text); 
       reader.Close(); 
      } 
     } 
    } 
    catch(ObjectDisposedException) 
    { 
     // The stream writer is already disposed? 
    } 
    finally 
    { 
     memoryStream.Dispose(); 
    } 
} 

Esto funciona muy bien en los archivos que se encuentran a menos de 8,00 KB (8.200 bytes). Si el archivo es más grande que eso, cualquier texto al final se corta.

¿Alguien tiene alguna sugerencia?

Respuesta

5

Tal vez, textWriter.Flush() después de una llamada a base.Render() le ahorrará su día.

+0

Eso se encargó. No estoy seguro de por qué se hizo cargo de eso, pero lo hizo, y eso es lo importante.

Cuestiones relacionadas