RDLC 报告索引超出了数组 asp net core 的范围

问题描述

在 asp net core mvc 中使用调试模式时,我得到 Index is out of the array 错误,但在非调试模式(Shift+F5)下运行时没问题。

这里是错误描述的详细信息:

处理请求时发生未处理的异常。 IndexOutOfRangeException: 索引超出数组范围。 AspNetCore.ReportingServices.RdlExpressions.ExpressionHostObjectModel.RemoteArrayWrapper.get_Item(int 索引)

ReportProcessingException:报告中发生意外错误 加工。指数数组的边界之外。 AspNetCore.ReportingServices.ReportProcessing.Execution.RenderReport.Execute(IRenderingExtension 新渲染器)

LocalProcessingException:本地报告时出错 处理。;报表处理中发生意外错误。指数 超出了数组的范围。 AspNetCore.Reporting.InternalLocalReport.InternalRender(字符串格式, bool allowInternalRenderers,字符串 deviceInfo,PageCountMode pageCountMode,CreateAndRegisterStream createStreamCallback,out 警告[]警告)

这里是我导出的 pdf 代码:

int extension = 1;
            var path = $"{this._webHostEnvironment.WebRootPath}\\Report\\RptDO2.rdlc";
            Dictionary<string,string> parameters = new Dictionary<string,string>();
            Encoding.RegisterProvider(CodePagesEncodingProvider.Instance);
            Encoding.GetEncoding("windows-1252");
            parameters.Add("txtto",inv.Quotation.CustomerContact.Customer.CompanyName);
            parameters.Add("txtaddress_detail",inv.Quotation.CustomerContact.Customer.Address1 + "\r\n"
                + inv.Quotation.CustomerContact.Customer.Address2 + "- "
                + inv.Quotation.CustomerContact.Customer.City + "- "
                + inv.Quotation.CustomerContact.Customer.State + " ("
                + inv.Quotation.CustomerContact.Customer.Zip + ")\r\n"
                + "Phone : " + inv.Quotation.CustomerContact.Customer.PhoneNumber
                + ",Email : " + inv.Quotation.CustomerContact.Customer.Email);
            parameters.Add("txtdo_no",inv.Id.Replace("INV","DO"));
            parameters.Add("txtdate",inv.Quotation.CreatedAt.ToShortDateString());
            parameters.Add("txtrefnum",inv.QuotationId);
            parameters.Add("txtfrom",us.FirstName + " " + us.LastName);
            parameters.Add("txtUP",TextUp);
            parameters.Add("kop_nama",c.CpName);
            parameters.Add("kop_alamat",c.CpStreetAddress);
            parameters.Add("kop_alamat2",c.CpCity + " " + c.CpState + " (" + c.CpZip + ")");
            parameters.Add("kop_contact",c.CpPhone);
            parameters.Add("kop_email",c.CpEmail);
            parameters.Add("kop_logo",Convert.ToBase64String(c.CpFoto));
            parameters.Add("txtjabatan",us.Designation);
            parameters.Add("txtPrintedBy",lgnuser.FirstName + " " + lgnuser.LastName);

            List<vwQuotationDetail> vwQuotationDetails = new List<vwQuotationDetail>();
            foreach (TblquotationDetail quos in inv.Quotation.TblquotationDetail.OrderBy(o => o.Id))
            {
                vwQuotationDetail quotationDetail = new vwQuotationDetail
                {
                    id = quos.Id,quotation_id = quos.QuotationId,order_number = quos.OrderNumber,product_name = quos.Product.ProductName,product_id = quos.ProductId,product_comments = string.IsNullOrEmpty(quos.ProductComments) ? "" : quos.ProductComments,quantity = quos.Quantity,unit_price = quos.UnitPrice,unit_name = quos.Product.Unit.UnitName,sub_total = quos.SubTotal,product_desc = quos.Product.ProductDesc,category_name = quos.Product.Category.CategoryName
                };
                vwQuotationDetails.Add(quotationDetail);
            }
                       
            LocalReport localReport = new LocalReport(path);
            localReport.AddDataSource("dsDO",vwQuotationDetails.ToArray());
            //var result = localReport.Execute(RenderType.Pdf,extension,parameters,mimtype);
            var result = localReport.Execute(RenderType.Pdf,parameters);
            return File(result.MainStream,"application/pdf");

任何建议将不胜感激,提前致谢。

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)