发生了如此罕见的事情。
在我的rdlc报告中,我设置了一些文本框以在MVC 4项目中显示为PDF,如果我在localhost模式下运行它,它的效果非常好。
但如果我部署了解决方案,则会抛出以下错误。
参数无效。 [ArgumentException:参数无效。] System.Drawing.Graphics.GetHdc()+ 1144409
Microsoft.ReportingServices.Rendering.RichText.LineBreaker.Flow(文本框 textBox,Graphics g,FontCache fontCache,FlowContext flowContext, 布尔值keepLines,Single&身高)+57
Microsoft.ReportingServices.Rendering.RichText.TextBox.MeasureFullHeight(文本框 textBox,Graphics g,FontCache fontCache,FlowContext flowContext, 单&安培; contentHeight)+500
Microsoft.ReportingServices.Rendering.HPBProcessing.TextBox.DetermineVerticalSize(PageContext中 pageContext,Double topInParentSystem,Double bottomInParentSystem,....[LocalProcessingException:本地报告期间发生错误 处理。]
Microsoft.Reporting.WebForms.LocalReport.InternalRender(String format, Boolean allowInternalRenderers,String deviceInfo,PageCountMode pageCountMode,CreateAndRegisterStream createStreamCallback, 警告[]&安培;警告)+338
Microsoft.Reporting.WebForms.LocalReport.InternalRender(String format, Boolean allowInternalRenderers,String deviceInfo,PageCountMode ...
注意:我注意到如果删除了我的rdlc中的那些文本框(我的意思是删除了everthing),生成一个空白的PDF。所以,我意识到文本框是麻烦,但我不知道为什么只有我部署。
我错过了什么?
我正在使用的代码是下一个:
public ActionResult SampleReport()
{
LocalReport localReport = new LocalReport();
localReport.ReportPath = Server.MapPath("~/Reports/Report1.rdlc");
string reportType = "PDF";
string mimeType;
string encoding;
string fileNameExtension;
//The DeviceInfo settings should be changed based on the reportType
//http://msdn2.microsoft.com/en-us/library/ms155397.aspx
string deviceInfo =
"<DeviceInfo>" +
" <OutputFormat>PDF</OutputFormat>" +
" <PageWidth>8.5in</PageWidth>" +
" <PageHeight>11in</PageHeight>" +
" <MarginTop>0.5in</MarginTop>" +
" <MarginLeft>1in</MarginLeft>" +
" <MarginRight>1in</MarginRight>" +
" <MarginBottom>0.5in</MarginBottom>" +
"</DeviceInfo>";
Warning[] warnings;
string[] streams;
byte[] renderedBytes;
//Render the report
renderedBytes = localReport.Render(
reportType,
deviceInfo,
out mimeType,
out encoding,
out fileNameExtension,
out streams,
out warnings);
//Response.AddHeader("content-disposition", "attachment; filename=NorthWindCustomers." + fileNameExtension);
return File(renderedBytes, mimeType);
}
更新 当我开始挖掘如何使用Report Services创建PDF时,我只关注这些指南:
最后一个是因为,我必须包括三个参考库,Microsoft.ReportViewer.Common
,Microsoft.ReportViewer.WebForms
和Microsoft.ReportViewer.ProcessingObjectModel
因为,当我部署我的解决方案时,这些库不计算在内,所以我手动添加。
就是这样!