none
Crystal Reports - erro ao abrir relatório (.net Runtime 2.0 Error reporting) RRS feed

  • Pergunta

  •  

    Estou com ploblema para criar um relatório. Quando eu coloco .Dispose() e .Close(), esta travando o IIS, quando verifico a mensagem de erro no log aparece a seguinte mensagem:

    - error .net Runtime 2.0 Error reporting

    - error Aplication error.

    Sem o Dispose e o Close o erro não aparece, mas após gerar alguns relatórios aparece um erro De falha de carregamento do relatório. 

    Segue o código:

    using System;

    using System.Data;

    using System.Configuration;

    using System.Linq;

    using System.Web;

    using System.Web.Security;

    using System.Web.UI;

    using System.Web.UI.HtmlControls;

    using System.Web.UI.WebControls;

    using System.Web.UI.WebControls.WebParts;

    using System.Xml.Linq;

    using System.Collections;

    using CrystalDecisions.ReportSource;

    using CrystalDecisions.Shared;

    using CrystalDecisions.CrystalReports.Engine;

     

    public class Reports

    {

        public ReportDocument ExecCrystal(string vFile, Hashtable rptParams)

        {

            int num;

            ReportDocument document = new ReportDocument();

            document.Load(vFile);

            foreach (string str in rptParams.Keys)

            {

                foreach (ParameterField field in document.ParameterFields)

                {

                    if (field.Name == str)

                    {

                        object obj2;

                        new ParameterDiscreteValue().Value = obj2 = rptParams[str];

                        field.CurrentValues.AddValue(obj2);

                    }

                }

            }

            string user = "";

            string password = "";

            string server = "";

            Hashtable hashtable = new Hashtable();

            user = "XXXX";

            password = "123";

            server = "XXXX";

     

            for (num = 0; num < document.DataSourceConnections.Count; num++)

            {

                document.DataSourceConnections[num].SetConnection(server, "", user, password);

            }

            for (num = 0; num < document.Subreports.Count; num++)

            {

                for (int i = 0; i < document.Subreports[num].DataSourceConnections.Count; i++)

                {

                    document.Subreports[num].DataSourceConnections[i].SetConnection(server, "", user, password);

                }

            }

            return document;

        }

    }


     

    using System;

    using System.Collections;

    using System.Configuration;

    using System.Data;

    using System.Linq;

    using System.Web;

    using System.Web.Security;

    using System.Web.UI;

    using System.Web.UI.HtmlControls;

    using System.Web.UI.WebControls;

    using System.Web.UI.WebControls.WebParts;

    using System.Xml.Linq;

    using CrystalDecisions.ReportSource;

    using CrystalDecisions.Shared;

    using CrystalDecisions.CrystalReports.Engine;

    using System.IO;

     

     

    public partial class PedidoVenda_PreviewPDV : System.Web.UI.Page

    {

        ReportDocument rptPreview = new ReportDocument();

        protected void Page_Load(object sender, EventArgs e)

        {

            try

            {

                        var rpt = new Reports();

     

                        rptPreview.Close();

                        rptPreview.Dispose();

     

                        string vFile = Server.MapPath(@"~\PedidoVenda\Formatos\MGWEB\ia_ven_gus_pv_20122010_new.rpt");

                        Hashtable rptParams = new Hashtable();

                        rptParams.Add("PED_IN_CODIGO", Request.QueryString["ped_in_sequencia"].ToString());

                        rptParams.Add("pImprimeDesc", "S");

     

                        rptPreview = rpt.ExecCrystal(vFile, rptParams);

     

                        MemoryStream oStream = (MemoryStream)rptPreview.ExportToStream(CrystalDecisions.Shared.ExportFormatType.PortableDocFormat);

                        Response.Clear();

                        Response.Buffer = true;

                        Response.ContentType = "application/pdf";

                        Response.BinaryWrite(oStream.ToArray());

                        Response.End();

            }

            catch (Exception ex)

            {

                lbStatus.Text = ex.Message;

            }

           

        }

     

       protected void Page_UnLoad(object sender, EventArgs e)

        {

                rptPreview.Close();

                rptPreview.Dispose();

                GC.Collect();

        }

    }

     

     


    terça-feira, 23 de agosto de 2011 11:44

Respostas

  • Olá Douglas,

    Pesquisei e achei algumas possíveis soluções:

    1 - De permissão na pasta "c:\windows\temp" para o usuário que está executando a sua web application.

    2 - Remova todos os Disposes(), Close() e GC.Collect() da sua página, exceto aqueles que estão no evento Form_UnLoad

     

    Referência:

    http://aspadvice.com/blogs/rjdudley/archive/2005/05/18/2591.aspx
    Fernando Henrique Inocêncio Borba Ferreira
    while(alive){ this.WriteCode(); }
    Blog: http://ferhenriquef.wordpress.com/
    Twitter: @ferhenrique
    • Marcado como Resposta Douglas Trindade terça-feira, 23 de agosto de 2011 13:26
    terça-feira, 23 de agosto de 2011 13:02

Todas as Respostas

  • Olá Douglas,

    Pesquisei e achei algumas possíveis soluções:

    1 - De permissão na pasta "c:\windows\temp" para o usuário que está executando a sua web application.

    2 - Remova todos os Disposes(), Close() e GC.Collect() da sua página, exceto aqueles que estão no evento Form_UnLoad

     

    Referência:

    http://aspadvice.com/blogs/rjdudley/archive/2005/05/18/2591.aspx
    Fernando Henrique Inocêncio Borba Ferreira
    while(alive){ this.WriteCode(); }
    Blog: http://ferhenriquef.wordpress.com/
    Twitter: @ferhenrique
    • Marcado como Resposta Douglas Trindade terça-feira, 23 de agosto de 2011 13:26
    terça-feira, 23 de agosto de 2011 13:02
  • Olá Fernando,

    Já tentei retirar todos os Disposes(), Close() e GC.Collect() deixando somente os que estão no evento Page_UnLoad, mas o erro persiste.

    Este erro não ocorre toda hora, ele é aleatório, os usuários conseguem emitir o relatório, mas o erro aparece após algumas emissões, e as vezes trava o processo w3wp.exe, e com isso a página fica fora do ar.

    Realizei um teste retirando Disposes(), Close() e GC.Collect() também do evento Page_UnLoad, com isso não tive mais esse problema, mas em compensação a memória do servido esta estourando.

    terça-feira, 23 de agosto de 2011 13:29
  • Douglas,

    Reclicle o Application Pool.

    Continue executando outras páginas da aplicação, e veja se não é outra funcionalidade.

    Outro detalhe que reparei, depois do Response.End(), faça um oStream.Dispose().

    Os dados estão ficando em memória.

    Vamos ver oq acontece.

    []s!


    Fernando Henrique Inocêncio Borba Ferreira
    while(alive){ this.WriteCode(); }
    Blog: http://ferhenriquef.wordpress.com/
    Twitter: @ferhenrique
    terça-feira, 23 de agosto de 2011 13:41
  •  

    Fernando,

    Criei um novo Application Pool para realizar uma simulação no ambiente de teste, todas as funções do site estão funcionando normalmente, o problema só começa acontecer quando começo abrir os relatórios.

     

    Código:

    using System;

    using System.Collections;

    using System.Configuration;

    using System.Data;

    using System.Linq;

    using System.Web;

    using System.Web.Security;

    using System.Web.UI;

    using System.Web.UI.HtmlControls;

    using System.Web.UI.WebControls;

    using System.Web.UI.WebControls.WebParts;

    using System.Xml.Linq;

    using CrystalDecisions.ReportSource;

    using CrystalDecisions.Shared;

    using CrystalDecisions.CrystalReports.Engine;

    using System.IO;

     

     

    public partial class PedidoVenda_PreviewPDV : System.Web.UI.Page

    {

        ReportDocument rptPreview = new ReportDocument();

        protected void Page_Load(object sender, EventArgs e)

        {

            try

            {

                    var pdv = new PedidoVenda();

                    string validador = pdv.GetValidaRepPed(Request.QueryString["ped_in_sequencia"].ToString(), Session["usuarioMega"].ToString());

      var rpt = new Reports();

      string vFile = Server.MapPath(@"~\PedidoVenda\Formatos\MGWEB\ia_ven_gus_pv_20122010_new.rpt");

                    Hashtable rptParams = new Hashtable();

                    rptParams.Add("PED_IN_CODIGO", Request.QueryString["ped_in_sequencia"].ToString());

                    rptParams.Add("pImprimeDesc", "S");

                    rptPreview = rpt.ExecCrystal(vFile, rptParams);

                   MemoryStream oStream = (MemoryStream)rptPreview.ExportToStream(CrystalDecisions.Shared.ExportFormatType.PortableDocFormat);

                   Response.Clear();

                   Response.Buffer = true;

                   Response.ContentType = "application/pdf";

                   Response.BinaryWrite(oStream.ToArray());

                   Response.End();

                   oStream.Close();

                   oStream.Dispose();

            }

            catch (Exception ex)

            {

                lbStatus.Text = ex.Message; 

            }

        }

     

        protected void Page_UnLoad(object sender, EventArgs e)

        {

            if (rptPreview != null)

            {

                rptPreview.Close();

                rptPreview.Dispose();

                GC.Collect();

            }

        }

    }

     

    Em menos de 5 minutos deus duas vezes o erro abaixo (Quando retiro do código o evento Page_UnLoad, esse erro não acontece ):

     

    Event Viewer

    Event Type:            Error

    Event Source:        .NET Runtime 2.0 Error Reporting

    Event Category:     None

    Event ID: 1000

    Date:                       23/08/2011

    Time:                      12:41:52

    User:                      N/A

    Description:

    Faulting application w3wp.exe, version 6.0.3790.3959, stamp 45d6968e, faulting module mscorwks.dll, version 2.0.50727.3620, stamp 4d352dce, debug? 0, fault address 0x0006be3a.

     

    For more information, see Help and Support Center at http://go.microsoft.com/fwlink/events.asp.

     

     


    terça-feira, 23 de agosto de 2011 17:03
  • Estou precisando muito resolver este problema, alguém pode me ajudar..
    sexta-feira, 26 de agosto de 2011 11:24
  • Olá Douglas,

    Achei alguns links...

    1) Reinstale o .Net Framework

    http://forum.umbraco.org/yaf_postst5770_NET-Runtime-version-20507271433--Fatal-Execution-Engine-Error-79FFEE24-80131506.aspx

     

    2) Reinstale o .Net Framework

    http://www.sentryfile.com/forum/messageview.cfm?catid=33&threadid=3096

     

    O cenário é meio ruim... cuidado quando reinstalar o .Net Framework...

     

    []s!


    Fernando Henrique Inocêncio Borba Ferreira
    while(alive){ this.WriteCode(); }
    Blog: http://ferhenriquef.wordpress.com/
    Twitter: @ferhenrique
    sexta-feira, 26 de agosto de 2011 13:50