2015-02-24 83 views

回答

1

我不确定“ajax request”是什么意思,为什么它很重要,但最近我们不得不解决类似的问题 - 即返回从其他工具生成的pdf。我们最终使用了作为模板a binary processor,利用the content negotiation

您可以修改二进制处理器以使用application/pdf MIME类型和“pdf”文件扩展名,因此只要请求的Accept标头为“application/pdf”或请求类似于http://example.com/reports/report.pdf时,它就会返回正确的响应。

利用这一点,假设你有IReportEngineStream GetReportByName(string name),您的模块会像(伪代码):

Get["reports/{reportName}"] = _ => _engine.GetReportByName(_.reportName); 
+0

你任何机会有一些代码片段来说明你的答案。我使用Crystal报表生成一个流,它没有任何IReportEngine类型的接口。 – zszep 2015-02-24 16:38:23

+0

IReportEngine只是您自己的接口/服务的一个例子,它可以与数据一起生成流。你可以使用任何你想要的。答案的关键在于,给定一个能产生流的类,如果你实现某种形式的媒体范围处理器,那么你的模块在返回这个流时非常简单,而南希内容协商将会完成剩下的工作。 – 2015-02-24 22:00:13