MVC Action需要很长时间才能返回

时间:2009-12-18 14:25:02

标签: asp.net-mvc action

我有一个带动作的MVC控制器

public ActionResult GeneratePDF(string id)
{
      FileContentResult filePath = this.File(pdfBuffer, MediaTypeNames.Application.Pdf);

      return filePath;
}

由于某种原因,当它到达返回线时它需要超过20秒。

pdfBuffer工作正常,当我在我的VS上运行时一切正常,但是当我部署到IIS 6时它运行缓慢。

任何人都知道为什么?

1 个答案:

答案 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();

实际上永远不会执行最后一行,因为我们直接在方法上结束请求。