Я столкнулся с подобной проблемой при попытке экспорта в 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();
Но если вы сделаете это, вы получите "not all code paths return a value"
от ActionMethod, чтобы избежать того, что мы просто отправим:
return new EmptyResult();
Эта последняя строка фактически никогда не будет выполнена, потому что мы заканчиваем запрос непосредственно в методе.