首页 文章

从ActiveReports 8导出Excel时出错404

提问于
浏览
0

我一直在努力工作两周,大部分时间都花在等待我的支持问题的回应上 . 我有解决方案,我将在这里发布,希望它可以帮助下一个遇到这个问题的人 . 我将投入大量不必要的细节来增加下一个发现这个的可能性 .

我正在使用MVC5站点,并使用ActiveReports 8 HTML5查看器显示IList绑定的基于代码的部分报告 . 我已使用availableExports参数启用了PDF,Word和Excel导出到GrapeCity.ActiveReports.Viewer javascript函数 . 查看器在页面上正确呈现,并对ActiveReports.ReportSerice.asmx进行预期调用,该调用返回呈现报告所需的信息,包括从中流式传输数据的URL . 报告显示在查看器中就好了 . 到现在为止还挺好 .

在我的开发机器上,我可以导出为PDF,Word和Excel . 但是,当部署到测试服务器时,Excel导出停止工作,浏览器只显示一个保存文件对话框,试图保存名为ActiveReports.ar8?blahblahblah的文件 . 挖掘Fiddler,我确定这与上面报告服务调用返回的URL几乎完全相同,除了一些参数,如“Command = Export”和“ExportFormat = Xls” .

保存此“文件”会生成一个名为ActiveReports.xls的0字节文件 . 我可以通过删除关键dll(例如GrapeCity.ActiveReports.Export.Pdf)然后请求PDF导出来模拟其他导出类型的此行为 . 在我看来,ActiveReports(至少从版本8.1.414.0开始)吞下某些服务器端错误,例如缺少dll,并向客户端返回404错误代码 . 我认为有关缺少的详细信息的500错误将优于通用404 .

这让我相信测试服务器上缺少某些东西 . 由于我在所有ActiveReports dll上都设置了“copy local”,并且我可以看到它们都已成功部署到测试服务器,因此缺少的部分必须是我本地计算机的GAC中存在的内容,而不是服务器上的内容 .

使用Fiddler,我确定对ActiveReports.ar8?blahblahblah URL的响应的返回码为404.结果404响应中的content-disposition头已设置为“attachment; filename = ActiveReports.xls”,但是Content-Type是“text / html”而不是预期的“application / vnd.ms-excel” . 这告诉我,出口在放弃之前至少在处理过程中处于中途 .

服务器上缺少什么阻止Excel导出完成?

2 回答

  • 0

    这个难题的缺失部分是DocumentFormat.OpenXml.dll,其副本可以在“C:\ Program Files(x86)\ Common Files \ ComponentOne \ ActiveReports 8”文件夹中找到 . 具有讽刺意味的是,它在所有GrapeCity.ActiveReports程序集旁边按字母顺序排列,但没有任何其他程序集使用它的任何指示,您可以像我一样轻松地查看它,确定它是该文件夹中其他内容的依赖项,例如许可证生成器 .

    将DocumentFormal.OpenXml.dll的引用添加到Web项目,并将Copy Local设置为true可确保将dll与其他所有内容一起部署 . 我的Excel导出现在工作得很好 .

  • 1

    对于您所面临的不便,我深表歉意 . 你使用Excel导出ActiveReports时,服务器上也需要'DocumentFormat.OpenXml.dll' . 我已经将此请求添加到文档中 . 感谢您提醒我们 .

    问候

相关问题