none
ASP.NET - MVC - The remote host closed the connection. The error code is 0x800703E3.

    General discussion

  • Tenho uma aplicação que retorna uma ActionResult<o:p></o:p>

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

    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:p></o:p>

    O que eu preciso:<o:p></o:p>

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

    Estou usando o seguinte código:<o:p></o:p>

     

     //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:p></o:p>

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

    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:p></o:p>

    Alguém já passou por isso.<o:p></o:p>

    Agradeço a atenção <o:p></o:p>

    Atenciosamente<o:p></o:p>

    Fábio Rocha<o:p></o:p>

                                                   
    Saturday, June 22, 2013 3:15 PM

All replies