EDN Admin
Well-known member
Tenho uma aplicação que retorna uma ActionResult<o
></o
>
Essa ActionResult vai me retornar um documento PDF em seu corpo que será alimentado por um array de bytes.<o
></o
>
Bom, este documento deverá conter no mínimo 20 páginas, onde é feita um requisição no banco de dados para cada página retornando no array de bytes da página.<o
></o
>
O que eu preciso:<o
></o
>
Para cada vez que a aplicação retornasse uma página já mostraria para o cliente<o
></o
>
Estou usando o seguinte código:<o
></o
>
//retorna os dados da imagem do documento
foreach (System.Data.DataRow r in tbpagina.Rows)
{
codigolancamentopagina = int.Parse(r["codigolancamento"].ToString());
numerorow = int.Parse(r["numerorow"].ToString());
if (codigolancamentopagina > 0 & numerorow >= rowinicial & numerorow <= rowfinal)
{
mds = null;
mensagemerro = "";
mds = mws.retornadadosdaimagemgl(codigoempresa, codigolancamentopagina, anoexercicio, ref mensagemerro, 0);
System.Data.DataTable tbdadosimagem = mds.Tables[0];
string dadosimagem = tbdadosimagem.Rows[0]["dadosimagem"].ToString();
arraybyte = System.Convert.FromBase64String(dadosimagem);
arImgBytes.Add(arraybyte);
//convert arraylist with image streams to pdf stream
pdfBytes = v.ConvertImageStreamArrayToPDFStream(arImgBytes);
pdf = pdfBytes;
pdfBytes = (Byte[])pdf;
MemoryStream ms = new MemoryStream();
MemoryStream pdfStream = new MemoryStream(pdfBytes);
int read = pdfStream.Read(pdfBytes, 0, pdfBytes.Length);
if (num == 1)
{
HttpContext.Response.Buffer = true;
HttpContext.Response.Clear();
HttpContext.Response.AddHeader("content-disposition", "inline; filename=documentos.pdf");
HttpContext.Response.AddHeader("Content-Length", pdfBytes.Length.ToString());
HttpContext.Response.ContentType = "application/PDF";
HttpContext.Response.OutputStream.Write(pdfBytes, 0, read);
HttpContext.Response.Flush();
}
else
{
HttpContext.Response.OutputStream.Write(pdfBytes, 0, read);
HttpContext.Response.Flush(); // Aqui está acontecendo o erro : The remote host closed the connection. The error code is 0x800703E3.
}
num++;
}
} <o
></o
>
Para cada laço do foreach, retornaria uma página para o PDF.<o
></o
>
O código acima retorna a primeira página certinho para o cliente, mas quando vai passar a segunda vez dá o erro no HttpContext.Response.Flush() = The remote host closed the connection. The error code is 0x800703E3.;<o
></o
>
Alguém já passou por isso.<o
></o
>
Agradeço a atenção <o
></o
>
Atenciosamente<o
></o
>
Fábio Rocha<o
></o
>
View the full article


Essa ActionResult vai me retornar um documento PDF em seu corpo que será alimentado por um array de bytes.<o


Bom, este documento deverá conter no mínimo 20 páginas, onde é feita um requisição no banco de dados para cada página retornando no array de bytes da página.<o


O que eu preciso:<o


Para cada vez que a aplicação retornasse uma página já mostraria para o cliente<o


Estou usando o seguinte código:<o


//retorna os dados da imagem do documento
foreach (System.Data.DataRow r in tbpagina.Rows)
{
codigolancamentopagina = int.Parse(r["codigolancamento"].ToString());
numerorow = int.Parse(r["numerorow"].ToString());
if (codigolancamentopagina > 0 & numerorow >= rowinicial & numerorow <= rowfinal)
{
mds = null;
mensagemerro = "";
mds = mws.retornadadosdaimagemgl(codigoempresa, codigolancamentopagina, anoexercicio, ref mensagemerro, 0);
System.Data.DataTable tbdadosimagem = mds.Tables[0];
string dadosimagem = tbdadosimagem.Rows[0]["dadosimagem"].ToString();
arraybyte = System.Convert.FromBase64String(dadosimagem);
arImgBytes.Add(arraybyte);
//convert arraylist with image streams to pdf stream
pdfBytes = v.ConvertImageStreamArrayToPDFStream(arImgBytes);
pdf = pdfBytes;
pdfBytes = (Byte[])pdf;
MemoryStream ms = new MemoryStream();
MemoryStream pdfStream = new MemoryStream(pdfBytes);
int read = pdfStream.Read(pdfBytes, 0, pdfBytes.Length);
if (num == 1)
{
HttpContext.Response.Buffer = true;
HttpContext.Response.Clear();
HttpContext.Response.AddHeader("content-disposition", "inline; filename=documentos.pdf");
HttpContext.Response.AddHeader("Content-Length", pdfBytes.Length.ToString());
HttpContext.Response.ContentType = "application/PDF";
HttpContext.Response.OutputStream.Write(pdfBytes, 0, read);
HttpContext.Response.Flush();
}
else
{
HttpContext.Response.OutputStream.Write(pdfBytes, 0, read);
HttpContext.Response.Flush(); // Aqui está acontecendo o erro : The remote host closed the connection. The error code is 0x800703E3.
}
num++;
}
} <o


Para cada laço do foreach, retornaria uma página para o PDF.<o


O código acima retorna a primeira página certinho para o cliente, mas quando vai passar a segunda vez dá o erro no HttpContext.Response.Flush() = The remote host closed the connection. The error code is 0x800703E3.;<o


Alguém já passou por isso.<o


Agradeço a atenção <o


Atenciosamente<o


Fábio Rocha<o


View the full article