Saltar al contenido principal

 none
The maximum report processing jobs limit configured by your system administrator has been reached. RRS feed

  • Pregunta

  • Hola, estoy trabajando con MVC5 C#, tengo un sistema de facturación que esta en prueba, lo monté en el hosting smarterasp, el cual estaba funcionando bien, los clientes facturaban e imprimían, ahora estoy recibiendo una lluvia de quejas que me dice que no pueden imprimir, que les sale un mensaje.

    Server Error in '/' Application.
    The maximum report processing jobs limit configured by your system administrator has been reached.
    Description: An unhandled exception occurred during the execution of the current web request. Please review the stack trace for more information about the error and where it originated in the code.
    
    Exception Details: System.Runtime.InteropServices.COMException: The maximum report processing jobs limit configured by your system administrator has been reached.
    
    Source Error:
    
    An unhandled exception was generated during the execution of the current web request. Information regarding the origin and location of the exception can be identified using the exception stack trace below.
    
    Stack Trace:
    
    
    [COMException (0x80000000): The maximum report processing jobs limit configured by your system administrator has been reached.]
       CrystalDecisions.ReportAppServer.ClientDoc.ReportClientDocumentClass.Open(Object& DocumentPath, Int32 Options) +0
       CrystalDecisions.ReportAppServer.ReportClientDocumentWrapper.Open(Object& DocumentPath, Int32 Options) +90
       CrystalDecisions.ReportAppServer.ReportClientDocumentWrapper.EnsureDocumentIsOpened() +258
    
    [CrystalReportsException: Load report failed.]
       CrystalDecisions.ReportAppServer.ReportClientDocumentWrapper.EnsureDocumentIsOpened() +321
       CrystalDecisions.CrystalReports.Engine.ReportDocument.Load(String filename, OpenReportMethod openMethod, Int16 parentJob) +851
       CrystalDecisions.CrystalReports.Engine.ReportDocument.Load(String filename) +78
       HistorialDeClientes.Controllers.VentasController.Exportar(String boton, VentaProducto unaVentaProducto) in C:\Programa agendatutrabajo Bootstrap4\HistorialDeClientes\HistorialDeClientes\HistorialDeClientes\Controllers\VentasController.cs:1595
       HistorialDeClientes.Controllers.VentasController.ReimprimirDeuda(Nullable`1 historialId, String impresion) in C:\Programa agendatutrabajo Bootstrap4\HistorialDeClientes\HistorialDeClientes\HistorialDeClientes\Controllers\VentasController.cs:66
       lambda_method(Closure , ControllerBase , Object[] ) +150
       System.Web.Mvc.ActionMethodDispatcher.Execute(ControllerBase controller, Object[] parameters) +14
       System.Web.Mvc.ReflectedActionDescriptor.Execute(ControllerContext controllerContext, IDictionary`2 parameters) +157
       System.Web.Mvc.ControllerActionInvoker.InvokeActionMethod(ControllerContext controllerContext, ActionDescriptor actionDescriptor, IDictionary`2 parameters) +27
       System.Web.Mvc.Async.AsyncControllerActionInvoker.<BeginInvokeSynchronousActionMethod>b__39(IAsyncResult asyncResult, ActionInvocation innerInvokeState) +22
       System.Web.Mvc.Async.WrappedAsyncResult`2.CallEndDelegate(IAsyncResult asyncResult) +29
       System.Web.Mvc.Async.WrappedAsyncResultBase`1.End() +49
       System.Web.Mvc.Async.AsyncControllerActionInvoker.EndInvokeActionMethod(IAsyncResult asyncResult) +32
       System.Web.Mvc.Async.AsyncInvocationWithFilters.<InvokeActionMethodFilterAsynchronouslyRecursive>b__3d() +50
       System.Web.Mvc.Async.<>c__DisplayClass46.<InvokeActionMethodFilterAsynchronouslyRecursive>b__3f() +228
       System.Web.Mvc.Async.<>c__DisplayClass33.<BeginInvokeActionMethodWithFilters>b__32(IAsyncResult asyncResult) +10
       System.Web.Mvc.Async.WrappedAsyncResult`1.CallEndDelegate(IAsyncResult asyncResult) +10
       System.Web.Mvc.Async.WrappedAsyncResultBase`1.End() +49
       System.Web.Mvc.Async.AsyncControllerActionInvoker.EndInvokeActionMethodWithFilters(IAsyncResult asyncResult) +34
       System.Web.Mvc.Async.<>c__DisplayClass2b.<BeginInvokeAction>b__1c() +26
       System.Web.Mvc.Async.<>c__DisplayClass21.<BeginInvokeAction>b__1e(IAsyncResult asyncResult) +100
       System.Web.Mvc.Async.WrappedAsyncResult`1.CallEndDelegate(IAsyncResult asyncResult) +10
       System.Web.Mvc.Async.WrappedAsyncResultBase`1.End() +49
       System.Web.Mvc.Async.AsyncControllerActionInvoker.EndInvokeAction(IAsyncResult asyncResult) +27
       System.Web.Mvc.Controller.<BeginExecuteCore>b__1d(IAsyncResult asyncResult, ExecuteCoreState innerState) +13
       System.Web.Mvc.Async.WrappedAsyncVoid`1.CallEndDelegate(IAsyncResult asyncResult) +29
       System.Web.Mvc.Async.WrappedAsyncResultBase`1.End() +49
       System.Web.Mvc.Controller.EndExecuteCore(IAsyncResult asyncResult) +36
       System.Web.Mvc.Controller.<BeginExecute>b__15(IAsyncResult asyncResult, Controller controller) +12
       System.Web.Mvc.Async.WrappedAsyncVoid`1.CallEndDelegate(IAsyncResult asyncResult) +22
       System.Web.Mvc.Async.WrappedAsyncResultBase`1.End() +49
       System.Web.Mvc.Controller.EndExecute(IAsyncResult asyncResult) +26
       System.Web.Mvc.Controller.System.Web.Mvc.Async.IAsyncController.EndExecute(IAsyncResult asyncResult) +10
       System.Web.Mvc.MvcHandler.<BeginProcessRequest>b__5(IAsyncResult asyncResult, ProcessRequestState innerState) +21
       System.Web.Mvc.Async.WrappedAsyncVoid`1.CallEndDelegate(IAsyncResult asyncResult) +29
       System.Web.Mvc.Async.WrappedAsyncResultBase`1.End() +49
       System.Web.Mvc.MvcHandler.EndProcessRequest(IAsyncResult asyncResult) +28
       System.Web.Mvc.MvcHandler.System.Web.IHttpAsyncHandler.EndProcessRequest(IAsyncResult result) +9
       System.Web.CallHandlerExecutionStep.System.Web.HttpApplication.IExecutionStep.Execute() +9873649
       System.Web.HttpApplication.ExecuteStepImpl(IExecutionStep step) +48
       System.Web.HttpApplication.ExecuteStep(IExecutionStep step, Boolean& completedSynchronously) +159

    Busque por todo internet pero no hay solución. Por favor, ustedes me han salvado de muchas. Este es el momento, recorro a ustedes oh gurus de la programación que me ayuden a un emprendedor novato que esta a punto de ser linchado.

    Mi código esta así.

    public ActionResult Exportar(string boton, VentaProducto unaVentaProducto)
            {            
                foreach (Venta item in unaVentaProducto.Ventas)
                {
                    double auxiva = double.Parse("1." + item.Producto.Iva);
                    item.Producto.Precio = (item.Total/item.Cantidad) / auxiva;
                }
                List<VentaProducto> auxListaVentaProducto = new List<VentaProducto>();
    
                auxListaVentaProducto.Add(unaVentaProducto);
    
                List<DatosEmpresa> listaDatosEmpresa = db.DatosEmpresas.Where(x => x.NombreComercial == unaVentaProducto.NombreComercial).ToList();
                
    
                ReportDocument rd = new ReportDocument();
                if (boton == "factura")
                {
                    rd.Load(Path.Combine(Server.MapPath("~/Reportes/Impresion.rpt")));
                }
                if (boton == "proforma")
                {
                    rd.Load(Path.Combine(Server.MapPath("~/Reportes/ImpresionProforma.rpt")));
    
                    rd.Database.Tables[4].SetDataSource(listaDatosEmpresa.Select(x => new
                    {
                        x.DatosEmpresaId,
                        x.NombreComercial,
                        x.Titular,
                        x.Ruc,
                        x.Telefono,
                        x.Direccion,
                        x.CalificacionArtesanal,
                        x.Observacion,
                        x.Logo
                    }).Where(a => a.NombreComercial == unaVentaProducto.NombreComercial).ToList());
                }
    
                rd.Database.Tables[0].SetDataSource(db.Clientes.Select(z => new
                {
                    z.Nombre,
                    z.Direccion,
                    z.Cedula,
                    z.Telefono,
                    z.Localidad,
                    z.ClienteId,
                    z.CorreoElectronico
                }).Where(a => a.ClienteId == unaVentaProducto.ClienteId).ToList());
    
    
    
                if (boton == "factura")
                {
                    List<Deuda> ListaDeuda = new List<Deuda>();
                    if (unaVentaProducto.unaDeuda == null)
                    {
                        unaVentaProducto.unaDeuda = new Deuda()
                        {
                            Anticipo = unaVentaProducto.PagoFactura.Efectivo + unaVentaProducto.PagoFactura.Cheque + unaVentaProducto.PagoFactura.Tarjeta
                           
                        };
                    }
    
                    //else
                    //{
                    //    unaVentaProducto.unaDeuda = new Deuda()
                    //    {
                    //        Anticipo = unaVentaProducto.unaDeuda.Anticipo
                    //    };
                    //};
    
                    ListaDeuda.Add(unaVentaProducto.unaDeuda);
                    
                    rd.Database.Tables[1].SetDataSource(ListaDeuda.Select(x => new
                    {
                        x.Anticipo,
                        x.Pendiente
                    }));
                }
                else
                {
                    List<Deuda> ListaDeuda = new List<Deuda> {
                         new Deuda() { Anticipo = 0, Pendiente = 0 }
                };
                    rd.Database.Tables[1].SetDataSource(ListaDeuda.Select(x => new
                    {
                        x.Anticipo,
                        x.Pendiente
                    }));
                }
                rd.Database.Tables[2].SetDataSource(auxListaVentaProducto.Select(x => new
                {
                    x.TotalVenta,
                    x.Iva,
                    x.SubTotal,
                    x.SubTotal0,
                    x.FechaVenta,
                    x.SubTotalTotal,
                    x.VentaProductoId
                }).Where(y => y.VentaProductoId == unaVentaProducto.VentaProductoId).ToList());
    
                rd.Database.Tables[3].SetDataSource((unaVentaProducto.Ventas).Select(x => new
                {
                    x.ProductoId,
                    x.Producto.Codigo,
                    x.Producto.Nombre,
                    x.Cantidad,
                    x.Producto.Precio,
                    x.Producto.Iva,
                    x.Total,
                    x.VentaProductoId,
                }).Where(e => e.VentaProductoId == unaVentaProducto.VentaProductoId).ToList());
    
    
    
    
                Response.Buffer = false;
                Response.ClearContent();
                Response.ClearHeaders();
    
                Stream stream = rd.ExportToStream(CrystalDecisions.Shared.ExportFormatType.PortableDocFormat);
                try
                {                
                    stream.Seek(0, SeekOrigin.Begin);
                    Session["Ventas"] = null;
                    if (boton == "factura")
                    {
                        return File(stream, "application/pdf", "Impresion.pdf");
                    }
                    else
                    {
                        return File(stream, "application/pdf", "ImpresionProforma.pdf");
                    }
                }
                catch
                {
                    throw;
                }
            }

    Agradezco a sus almas caritativas, necesito una mano. Gracias.

    martes, 19 de noviembre de 2019 23:22

Todas las respuestas

  • Me respondo yo mismo o para alguien que le pase lo mismo. Use mejor un using() y ya se liberó las impresiones. Usé el using en el momento de crear el reporte.
    using (ReportDocument rd = new ReportDocument())
    Ahí les dejo como quedo todo. Espero ayudar a más gente que este como yo.

    public ActionResult Exportar(string boton, /*Deuda deuda,*/ VentaProducto unaVentaProducto)
            {            
                foreach (Venta item in unaVentaProducto.Ventas)
                {
                    double auxiva = double.Parse("1." + item.Producto.Iva);
                    item.Producto.Precio = (item.Total/item.Cantidad) / auxiva;
                }
                List<VentaProducto> auxListaVentaProducto = new List<VentaProducto>();
    
                auxListaVentaProducto.Add(unaVentaProducto);
    
                List<DatosEmpresa> listaDatosEmpresa = db.DatosEmpresas.Where(x => x.NombreComercial == unaVentaProducto.NombreComercial).ToList();
    
                //System.Collections.Queue reportQueue = new System.Collections.Queue();
                //if(reportQueue.Count > 10)
                //{
                //    ((ReportDocument)reportQueue.Dequeue()).Close();
                //    ((ReportDocument)reportQueue.Dequeue()).Dispose();
                //    GC.Collect();
                //}
    
                //ReportDocument rd = new ReportDocument();
                using (ReportDocument rd = new ReportDocument())
                { 
                    if (boton == "factura")
                    {
                        rd.Load(Path.Combine(Server.MapPath("~/Reportes/Impresion.rpt")));
                    }
                if (boton == "proforma")
                {
                    rd.Load(Path.Combine(Server.MapPath("~/Reportes/ImpresionProforma.rpt")));
    
                    rd.Database.Tables[4].SetDataSource(listaDatosEmpresa.Select(x => new
                    {
                        x.DatosEmpresaId,
                        x.NombreComercial,
                        x.Titular,
                        x.Ruc,
                        x.Telefono,
                        x.Direccion,
                        x.CalificacionArtesanal,
                        x.Observacion,
                        x.Logo
                    }).Where(a => a.NombreComercial == unaVentaProducto.NombreComercial).ToList());
                }
    
                rd.Database.Tables[0].SetDataSource(db.Clientes.Select(z => new
                {
                    z.Nombre,
                    z.Direccion,
                    z.Cedula,
                    z.Telefono,
                    z.Localidad,
                    z.ClienteId,
                    z.CorreoElectronico
                }).Where(a => a.ClienteId == unaVentaProducto.ClienteId).ToList());
    
    
    
                if (boton == "factura")
                {
                    List<Deuda> ListaDeuda = new List<Deuda>();
                    if (unaVentaProducto.unaDeuda == null)
                    {
                        unaVentaProducto.unaDeuda = new Deuda()
                        {
                            Anticipo = unaVentaProducto.PagoFactura.Efectivo + unaVentaProducto.PagoFactura.Cheque + unaVentaProducto.PagoFactura.Tarjeta
                           
                        };
                    }
    
                    //else
                    //{
                    //    unaVentaProducto.unaDeuda = new Deuda()
                    //    {
                    //        Anticipo = unaVentaProducto.unaDeuda.Anticipo
                    //    };
                    //};
    
                    ListaDeuda.Add(unaVentaProducto.unaDeuda);
                    
                    rd.Database.Tables[1].SetDataSource(ListaDeuda.Select(x => new
                    {
                        x.Anticipo,
                        x.Pendiente
                    }));
                }
                else
                {
                    List<Deuda> ListaDeuda = new List<Deuda> {
                         new Deuda() { Anticipo = 0, Pendiente = 0 }
                };
                    rd.Database.Tables[1].SetDataSource(ListaDeuda.Select(x => new
                    {
                        x.Anticipo,
                        x.Pendiente
                    }));
                }
                rd.Database.Tables[2].SetDataSource(auxListaVentaProducto.Select(x => new
                {
                    x.TotalVenta,
                    x.Iva,
                    x.SubTotal,
                    x.SubTotal0,
                    x.FechaVenta,
                    x.SubTotalTotal,
                    x.VentaProductoId
                }).Where(y => y.VentaProductoId == unaVentaProducto.VentaProductoId).ToList());
    
                rd.Database.Tables[3].SetDataSource((unaVentaProducto.Ventas).Select(x => new
                {
                    x.ProductoId,
                    x.Producto.Codigo,
                    x.Producto.Nombre,
                    x.Cantidad,
                    x.Producto.Precio,
                    x.Producto.Iva,
                    x.Total,
                    x.VentaProductoId,
                }).Where(e => e.VentaProductoId == unaVentaProducto.VentaProductoId).ToList());
    
    
    
    
                Response.Buffer = false;
                Response.ClearContent();
                Response.ClearHeaders();
    
                Stream stream = rd.ExportToStream(CrystalDecisions.Shared.ExportFormatType.PortableDocFormat);
                try
                {
                    
                    //rd.Close();
                    //rd.Dispose();
                    stream.Seek(0, SeekOrigin.Begin);
                    Session["Ventas"] = null;
                    if (boton == "factura")
                    {
                        return File(stream, "application/pdf", "Impresion.pdf");
                    }
                    else
                    {
                        return File(stream, "application/pdf", "ImpresionProforma.pdf");
                    }
                }
                catch
                {
                    throw;
                }
                }
            }

    martes, 19 de noviembre de 2019 23:46