【发布时间】:2014-10-10 17:15:50
【问题描述】:
我断断续续地为此苦苦挣扎了两个星期,其中大部分时间都花在等待对我的支持问题的答复上。我有解决方案,我将在此处发布,希望对遇到此问题的下一个人有所帮助。我将添加很多不必要的细节,以增加下一个人找到这个的几率。
我正在开发一个 MVC5 站点,并使用 ActiveReports 8 HTML5 查看器来显示 IList 绑定的基于代码的部分报告。我已使用 GrapeCity.ActiveReports.Viewer javascript 函数的 availableExports 参数启用 PDF、Word 和 Excel 导出。查看器在页面上正确呈现,并对 ActiveReports.ReportSerice.asmx 进行预期调用,该调用返回呈现报表所需的信息,包括从中流式传输数据的 URL。报告在查看器中显示得很好。到目前为止一切顺利。
在我的开发机器上,我可以导出为 PDF、Word 和 Excel。但是,当部署到测试服务器时,Excel 导出停止工作,浏览器只显示一个保存文件对话框,试图保存名为 ActiveReports.ar8?blahblahblah 的文件。通过 Fiddler 的深入研究,我确定这与调用上述报告服务返回的 URL 几乎完全相同,除了一些参数,例如“Command=Export”和“ExportFormat=Xls”。
保存此“文件”会生成一个名为 ActiveReports.xls 的 0 字节文件。例如,我可以通过删除诸如 GrapeCity.ActiveReports.Export.Pdf 之类的关键 dll 来模拟其他导出类型的这种行为,然后请求 PDF 导出。在我看来,ActiveReports(至少从 8.1.414.0 版开始)会吞下某些服务器端错误,例如缺少 dll,并向客户端返回 404 错误代码。我认为 500 错误,其中包含有关缺失内容的详细信息,比通用 404 更可取。
这让我相信测试服务器上缺少某些东西。由于我在所有 ActiveReports dll 上都设置了“本地复制”,并且我可以看到它们都已成功部署到测试服务器,因此缺少的部分必须是我本地机器的 GAC 中存在的东西,而不是服务器上的东西。
使用 Fiddler,我确定对 ActiveReports.ar8?blahblahblah URL 的响应的返回代码为 404。生成的 404 响应的内容处置标头已设置为“附件;文件名=ActiveReports.xls” ,但 Content-Type 是“text/html”而不是预期的“application/vnd.ms-excel”。这告诉我,在放弃之前,出口至少完成了部分处理。
阻止 Excel 导出完成的服务器缺少什么?
【问题讨论】:
标签: export-to-excel activereports