2009-12-18 6 views
1

J'ai un contrôleur MVC avec une actionaction MVC prendre beaucoup de temps pour revenir

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

     return filePath; 
} 

Et pour une raison quelconque, il est de prendre plus de 20 secondes quand il frappe la ligne de retour. Le pdfBuffer fonctionne bien, et quand je le lance sur mon VS, tout va bien, mais quand je le déploie sur IIS 6 il fonctionne lentement.

Quelqu'un sait pourquoi?

Répondre

2

je courais un problème similaire lorsque vous essayez d'exporter vers XLS et PDF, la seule chose qui semble améliorer le temps de réponse envoyais la réponse directement à partir de la classe qui génère le fichier comme:

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

Mais si vous faites cela, vous obtiendrez un "not all code paths return a value" du ActionMethod, pour éviter que nous envoyons seulement:

return new EmptyResult(); 

cette dernière ligne en fait jamais être exécuté parce que nous finissons la demande directement sur la méthode.

+0

Parfait, merci :-) – Coppermill