我正在使用C#(.NET 4)从我的应用程序中的Crystal RPT文件生成并返回PDF。它间歇性地工作,但生成PDF的速度很慢(有时根本不完整)。对下面代码的任何建议可能会指出我正确的方向?
// POST: /API/GetReport
[HttpPost]
public ActionResult GetReport()
{
BoolResponse response = new BoolResponse { };
string evalID = Request["evalID"] ?? "";
if (evalID != "" && UserCanViewEval(evalID)) {
ReportClass rptH = new ReportClass();
try
{
ParameterField paramField = new ParameterField();
ParameterDiscreteValue paramDiscreteValue = new ParameterDiscreteValue();
ParameterValues paramValues = new ParameterValues();
rptH.FileName = Server.MapPath("~/Content/Reports/Eval.rpt");
rptH.Load();
rptH.SetParameterValue("EvalID", evalID);
Stream stream = rptH.ExportToStream(ExportFormatType.PortableDocFormat);
stream.Seek(0, System.IO.SeekOrigin.Begin);
return new FileStreamResult(stream, "application/pdf");
}
catch (Exception e)
{
response.errors = e.Message;
return Json(response, JsonRequestBehavior.AllowGet);
}
finally {
rptH.Close();
rptH.Dispose();
}
}
else {
return View();
}
}
答案 0 :(得分:0)
看起来我需要和我们的报告撰写人谈谈。我们将缓慢的原因分为RPT文件本身或其中的查询。我让他直接从他的开发环境(完全在我的.NET应用程序之外)运行RPT文件,并执行相同的操作。
我猜测与Crystal中的GUI(报表编写者)放在一起的查询效率不高,因为我的应用程序的其余部分都是闪电般快速的。