亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

MVC 項目中的 .Rdlc 報告 - 托管調試助手“PInvokeStackImbalance”

MVC 項目中的 .Rdlc 報告 - 托管調試助手“PInvokeStackImbalance”

C#
忽然笑 2023-08-13 16:24:19
我即將完成并運行我的上一份報告。我在其他報告中沒有遇到過這個問題。我正在嘗試根據數據庫記錄創建報告。當我通過 LocalReport 創建報告并為報告創建參數時,收到錯誤消息“托管調試助手‘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;        }
查看完整描述

6 回答

?
慕哥6287543

TA貢獻1831條經驗 獲得超10個贊

我正在運行 Microsoft.ReportingServices.ReportViewerControl.WebForms 150.1400.0 并遇到同樣的問題。

強制iisexpress以64位運行即可解決此問題,步驟:

  • 工具

  • 選項

  • 項目及解決方案

  • Web 項目并選中該選項

  • 對網站和項目使用 64 位版本的 IIS Express


查看完整回答
反對 回復 2023-08-13
?
猛跑小豬

TA貢獻1858條經驗 獲得超8個贊

PInvokeStackImbalance更多的是一個“調試助手”而不是一個例外。所以...

就我而言,由于它并沒有阻止呈現報告,因此我只是在調試項目時禁用了此異常。


查看完整回答
反對 回復 2023-08-13
?
手掌心

TA貢獻1942條經驗 獲得超3個贊

這對我有用(保留設置):


var deviceInfo = @"<DeviceInfo>

                    <EmbedFonts>None</EmbedFonts>

                   </DeviceInfo>";


byte[] bytes = rdlc.Render("PDF", deviceInfo);


查看完整回答
反對 回復 2023-08-13
?
楊魅力

TA貢獻1811條經驗 獲得超6個贊

我在僅調試時嘗試將 RDLC 導出為 PDF 時遇到了此錯誤。Excel 和 Word 沒有出現任何問題。

它似乎是在幾個月前我們從 ReportViewer.WinForms v14 升級到 v15 時開始的,但我們沒有注意到,因為項目編譯后就不會出現該錯誤,這證實了 @marcusgambit 提到的“調試異?!?。

@brosolomon 和 @srivaishnavgandhe 關于字體的建議似乎也正確 - Arial 和 Times New Roman 渲染良好,而其余的則導致錯誤 - 我測試了 Calibri、Cambria、Verdana、Wingdings、Tahoma、Segoe。

報告內容和數據似乎沒有什么區別 - RDLC 中似乎存在除 Arial 或 Times New Roman 以外的任何字體的標簽,這似乎導致了問題。

查看完整回答
反對 回復 2023-08-13
?
MMTTMM

TA貢獻1869條經驗 獲得超4個贊

我的報告也有同樣的問題。確保您的報告沒有不同的字體。我將報告更改為通篇使用 Arial 字體,錯誤已解決。



查看完整回答
反對 回復 2023-08-13
?
萬千封印

TA貢獻1891條經驗 獲得超3個贊

有趣的是,我只在 Microsoft.ReportViewer.WebForms Version=15.0.0.0 中遇到過這種情況,以前的版本沒有任何問題。什么有效:我以@Srivaishnav Gandhe 的身份做了。我混合了 Cambria 和 Ariel 字體。我把所有的 Cambria 都改成 Ariel 了,萬歲 - 一切都成功了。還要小心,如果您在定義中設置了區域性并且報告上的日期格式與指定的區域性不同,則可能會發生這種情況。因此,將文化設置為中性是安全的:



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


查看完整回答
反對 回復 2023-08-13
  • 6 回答
  • 0 關注
  • 340 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號