我已经快要准备好我的上一份报告并开始运行了。 我的其他任何报告都没有这个问题。 我正在尝试根据数据库记录创建报告。 当我通过LocalReport创建报告并为报告创建参数时,收到错误消息“ Managed Debugging Assistant'PInvokeStackImbalance”:'对PInvoke函数'Microsoft.ReportViewer.Common!Microsoft.ReportingServices.Rendering.ImageRenderer的调用。 FontPackage :: CreateFontPackage'已使堆栈不平衡。 这可能是因为托管PInvoke签名与非托管目标签名不匹配。 检查PInvoke签名的调用约定和参数是否与目标非托管签名匹配。 这是我的MVC项目的.rdlc报告。 记录是正确的,并且插入了值,但是当我显示/创建它时,报告错误了。 在'renderedBytes = localReport.Render(

/* TRACKER_TEST Database Connection ~ Debugging & Testing */
            TRACKER_TESTDataSet dataSet = new TRACKER_TESTDataSet();
            TRACKER_TESTDataSetTableAdapters.Service_Report_FieldsTableAdapter adapter = new TRACKER_TESTDataSetTableAdapters.Service_Report_FieldsTableAdapter();
            LocalReport localReport = new LocalReport();
            localReport.ReportPath = Server.MapPath("~/ReportForms/VirtualService2.rdlc");
            List<TRACKER_TESTDataSet.Service_Report_FieldsRow> report = new List<TRACKER_TESTDataSet.Service_Report_FieldsRow>();
            foreach(var row in list)
            {
                report.Add(adapter.GetDataBy(row.SN1, row.SN2).First());
            }
            ReportDataSource rds = new ReportDataSource("Service_Data", report);
            localReport.DataSources.Add(rds);


            // command specifies whether its a PDF EXCEL WORD IMAGE doc
            string reportType = command;
            string mimeType, encoding, fileNameExtension;

            string deviceInfo =
                "<DeviceInfo>" +
                "   <OutputFormat>" + command + "</OutputFormat>" +
                "   <PageWidth>8.5in</PageWidth>" +
                "   <PageHeight>11in</PageHeight>" +
                "   <MarginTop>0.5in</MarginTop>" +
                "   <MarginLeft>0.3in</MarginLeft>" +
                "   <MarginRight>0.3in</MarginRight>" +
                "   <MarginBottom>0.5</MarginBottom>" +
                "</DeviceInfo>";

            Warning[] warnings;
            string[] streams;
            byte[] renderedBytes;

            renderedBytes = localReport.Render(
                reportType,
                deviceInfo,
                out mimeType,
                out encoding,
                out fileNameExtension,
                out streams,
                out warnings);

            return File(renderedBytes, mimeType);
        }

===============>>#1 票数:1

我的报告也有同样的问题。 确保您的报告没有不同的字体。 我将报告更改为始终使用Arial字体,此错误已解决。

===============>>#2 票数:0

有趣的是,我只在Microsoft.ReportViewer.WebForms Version = 15.0.0.0上经历过。以前的版本没有问题。 起作用的是:我的工作方式是@Srivaishnav Gandhe。 我混合了Cambria和Ariel字体。 我将所有的Cambria都更改为Ariel和hooray-都奏效了。 同样要小心,如果您在定义中设置了区域性,并且报表中的日期格式与指定的区域性格式不同,则可能会发生这种情况。 因此,将文化设置为中立是安全的:


 <%@ Register assembly="Microsoft.ReportViewer.WebForms, Version=15.0.0.0, Culture=neutral, PublicKeyToken=89845dcd8080cc91" namespace="Microsoft.Reporting.WebForms" tagprefix="rsweb" %> 


===============>>#3 票数:0

根据这个答案 ,PInvokeStackImbalance不仅仅是一个“调试助手”,而不仅仅是一个例外。 所以...

就我而言,由于它不能阻止报表的呈现,因此我只是在调试项目时禁用了此异常 (请参阅告诉调试器继续处理用户未处理的异常 )。 这帮了我大忙。

===============>>#4 票数:0

升级到15.0.0.0版后,这里出现同样的问题。 我将rdlc中的所有字体声明更改为Arial(仍在使用不同的字体大小),但是仍然存在问题。 我偶然发现了一个我不了解的修补程序,想知道是否还有其他人有此见识:在Visual Studio(Vers。Community 2017)中,转到“工具”,“选项”,“项目和解决方案”,“ Web项目”,然后选中“使用64-用于网站和项目的IIS Express的位版本。 如果检查,我没有问题。

  ask by Bigbear translate from so

未解决问题?本站智能推荐:

关注微信公众号