我有一个带动作的MVC控制器
public ActionResult GeneratePDF(string id)
{
FileContentResult filePath = this.File(pdfBuffer, MediaTypeNames.Application.Pdf);
return filePath;
}
由于某种原因,当它到达返回线时它需要超过20秒。
pdfBuffer工作正常,当我在我的VS上运行时一切正常,但是当我部署到IIS 6时它运行缓慢。
任何人都知道为什么?
答案 0 :(得分:2)
我在尝试导出到XLS和PDF时遇到了类似的问题,似乎唯一可以改善响应时间的是直接从生成文件的类发送响应,如:
HttpContext.Current.Response.Clear();
HttpContext.Current.Response.ClearContent();
HttpContext.Current.Response.ClearHeaders();
HttpContext.Current.Response.Buffer = true;
HttpContext.Current.Response.BufferOutput = true;
HttpContext.Current.Response.ContentType = "application/pdf";
HttpContext.Current.Response.AddHeader("Content-Disposition", "attachment;filename=" + file + ".pdf");
HttpContext.Current.Response.BinaryWrite(stream.ToArray());
HttpContext.Current.Response.Flush();
stream.Close();
HttpContext.Current.Response.End();
但是如果你这样做,你将从ActionMethod获得一个"not all code paths return a value"
,以避免我们发送一个:
return new EmptyResult();
实际上永远不会执行最后一行,因为我们直接在方法上结束请求。