【问题标题】:Why I got this error Not enough memory resources are available to process this command?为什么我得到这个错误没有足够的内存资源来处理这个命令?
【发布时间】:2021-12-17 23:52:12
【问题描述】:

在我的网站中使用 ASP.NET MVC + webforms C# 和水晶报表,

当我点击按钮使用水晶报告打印报告时,我收到了这个错误

"没有足够的内存资源来处理这个命令"

每 2 天我收到此错误,我通过重新发布网站解决了它,但我需要永久解决方案

这是网络表单中使用的代码:

protected void Page_Load(object sender, EventArgs e)
        {
            if (!IsPostBack)
            {
                
                TXTORDERID.Text = Request.QueryString["order_number"].ToString();
                TXTDEPTID.Text = Request.QueryString["deptid"].ToString();
                TXTTESTID.Text = Request.QueryString["testid"].ToString();
                TXTCULTURE.Text = Request.QueryString["Culture"].ToString();
                
                ParameterFields paramFields = new ParameterFields();
                ParameterField paramField = new ParameterField();
                ParameterDiscreteValue paramDiscreteValue = new ParameterDiscreteValue();
                ParameterDiscreteValue paramDiscreteValue1 = new ParameterDiscreteValue();
                ParameterField parameterField1 = new ParameterField();
                ParameterDiscreteValue parameterDiscreteValue1 = new ParameterDiscreteValue();
                ParameterFields parameterFields = new ParameterFields();


                if (Convert.ToInt32(TXTDEPTID.Text) == 7 && Convert.ToInt32(TXTCULTURE.Text) == 1)
                {
                    TXTPOSITIVE.Text = Request.QueryString["Positive"].ToString();
                }
                if (Session["UserCustid"] != null && Convert.ToInt32(Session["UserCustid"]) > 0)
                {
    if (Convert.ToInt32(TXTDEPTID.Text) == 1 || Convert.ToInt32(TXTDEPTID.Text) == 2 || Convert.ToInt32(TXTDEPTID.Text) == 3 || Convert.ToInt32(TXTDEPTID.Text) == 4)
                        {
    
                            paramField.Name = "@ORDER_ID";
                            paramDiscreteValue.Value = TXTORDERID.Text.ToString();
                            paramField.CurrentValues.Add(paramDiscreteValue);
                            paramFields.Add(paramField);
    
                            paramField = new ParameterField(); // <-- This line is added
                            paramDiscreteValue = new ParameterDiscreteValue();  // <-- This line is added
                            paramField.Name = "@branch_id";
                            paramDiscreteValue1.Value = TXTDEPTID.Text.ToString();
                            paramField.CurrentValues.Add(paramDiscreteValue1);
                            paramFields.Add(paramField);
    
                            CrystalReportViewer1.ParameterFieldInfo = paramFields;
                            CrystalReportViewer1.ReuseParameterValuesOnRefresh = true;
                            CrystalReportViewer1.ToolPanelView = CrystalDecisions.Web.ToolPanelViewType.None;
                            reportDocument.Load(Server.MapPath("~/RPT/RPTCREDITRESULTS.rpt"));
                            CrystalReportViewer1.ReportSource = reportDocument;
                            reportDocument.SetDatabaseLogon("admin", "1234");
                            var connectionInfo = new ConnectionInfo();
                            connectionInfo.ServerName = "desktop";
                            connectionInfo.DatabaseName = "DBA";
                            connectionInfo.Password = "1234";
                            connectionInfo.UserID = "admin";
                            connectionInfo.Type = ConnectionInfoType.SQL;
                            connectionInfo.IntegratedSecurity = false;
                            for (int i = 0; i < CrystalReportViewer1.LogOnInfo.Count; i++)
                            {
                                CrystalReportViewer1.LogOnInfo[i].ConnectionInfo = connectionInfo;
                            }
    
                            CrystalReportViewer1.Dispose();
                            
                        }
                        
    
                        if (Convert.ToInt32(TXTDEPTID.Text) == 0)
                        {
    
                            parameterField1.Name = "@ORDER_ID";
                            parameterDiscreteValue1.Value = (object)this.TXTORDERID.Text.ToString();
                            parameterField1.CurrentValues.Add((ParameterValue)parameterDiscreteValue1);
                            parameterFields.Add(parameterField1);
    
                            //ParameterField parameterField2 = new ParameterField();
                            //ParameterDiscreteValue parameterDiscreteValue2 = new ParameterDiscreteValue();
                            //parameterField2.Name = "@deptid";
                            //parameterDiscreteValue2.Value = (object)this.TXTDEPTID.Text.ToString();
                            //parameterField2.CurrentValues.Add((ParameterValue)parameterDiscreteValue2);
                            //parameterFields.Add(parameterField2);
                            this.CrystalReportViewer1.ParameterFieldInfo = parameterFields;
                            this.CrystalReportViewer1.ReuseParameterValuesOnRefresh = true;
                            this.CrystalReportViewer1.ToolPanelView = ToolPanelViewType.None;
                            reportDocument.Load(this.Server.MapPath("~/RPT/RPTCREDITRESULTS.rpt"));
                            this.CrystalReportViewer1.ReportSource = (object)reportDocument;
                            reportDocument.SetDatabaseLogon("admin", "1234");
    
                            ConnectionInfo connectionInfo = new ConnectionInfo();
                            connectionInfo.ServerName = "desktop";
                            connectionInfo.DatabaseName = "DBA";
                            connectionInfo.Password = "1234";
                            connectionInfo.UserID = "admin";
                            connectionInfo.Type = ConnectionInfoType.SQL;
                            connectionInfo.IntegratedSecurity = false;
                            for (int index = 0; index < this.CrystalReportViewer1.LogOnInfo.Count; ++index)
                                this.CrystalReportViewer1.LogOnInfo[index].ConnectionInfo = connectionInfo;
                            CrystalReportViewer1.Dispose();
                        }

这是错误页面:

我需要您的帮助并解决此错误并停止服务器上的接收错误?

我试图关闭并处理报表文档,但运行报表时总是出错:对象引用未设置为实例对象错误

我将把 close 和 dispose 的代码放在哪里,不会出现这个错误

对象引用未设置到实例对象错误?

reportDocument.Close(); 
reportDocument.Dispose(); 

我检查了这个链接并在服务器注册表中将 Printjoblimit 的值更改为 1500 是否正确?

https://blogs.sap.com/2014/04/25/what-exactly-is-maximum-report-processing-job-limit-for-crystal-reports/

【问题讨论】:

    标签: c# asp.net asp.net-mvc crystal-reports


    【解决方案1】:

    在页面加载 void 之后添加此 void 希望这将解决错误:

    protected void Page_Unload(object sender, EventArgs e)
     {
         if (reportDocument != null)
          {
                  reportDocument.Close(); 
                  reportDocument.Dispose();  
                  reportDocument = null;
           }
     }
    

    还有关于注册表中的打印作业限制参数,例如尝试将值增加到 9000 并检查这是路径:

    “HKEY_LOCAL_MACHINE\SOFTWARE\SAP BusinessObjects\Crystal Reports for .NET Framework 4.0\Report Application Server\InprocServer”
    

    【讨论】:

    • 好的,谢谢我试过了,我会等一个星期看看
    • 谢谢你直到现在我没有收到这个错误
    猜你喜欢
    • 2020-09-07
    • 2021-09-30
    • 1970-01-01
    • 1970-01-01
    • 2010-10-07
    • 2018-08-30
    • 2014-01-24
    • 1970-01-01
    • 2010-10-28
    相关资源
    最近更新 更多