我一直在为此苦苦挣扎两周,其中大部分时间都花在等待响应我的支持问题上。我有解决方案,我将在这里发布这个解决方案,希望它能帮助下一个遇到这个问题的人。我会投入很多不必要的细节,以增加下一个发现这个问题的人的几率。从ActiveReports导出Excel时出现错误8
我正在使用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上设置了“复制本地”,并且我可以看到它们都已成功部署到测试服务器,所以缺少的部分必须是本地机器的GAC中存在的内容,而不是服务器上的内容。
使用Fiddler,我已确定对ActiveReports.ar8?blahblahblah URL的响应具有404的返回码。生成的404响应中的content-disposition标题已设置为“attachment; filename = ActiveReports.xls “,但Content-Type是”text/html“而不是预期的”application/vnd.ms-excel“。这告诉我,在放弃之前,出口至少是通过加工的中途。
防止Excel导出完成的服务器上缺少什么?
它添加到文档将是有益的,但我希望得到它在计算器上,因为,说实话,这是人们最有可能找到它,如果他们在未来面临着类似的问题。 – Mel 2014-11-06 04:41:47