ashx+异步
目前项目存在页面展示大量图片,效率不高,考虑优化性能,改为ashx+异步下载的方式,废话不说直接贴code:
using System;
using System.Web;
using System.IO;
using System.Web.SessionState;
using System.Threading.Tasks;
public class DownLoadS3FileAsync : System.Web.HttpTaskAsyncHandler
{
public void ProcessRequest(HttpContext context)
{
throw new NotImplementedException();
}
public override async Task ProcessRequestAsync(HttpContext context)
{
SystemError.CreateErrorLog("开始执行异步啦");
await Task.Run(() =>
{
//调用下载方法
Download(context);
});
SystemError.CreateErrorLog("调用异步完成啦");
}
public void Download(HttpContext context)
{
SystemError.CreateErrorLog("开始下载啦");
//文件路径
string key = context.Request.QueryString["key"];
byte[] bFile = StorageService.Current.Download(key);
//输出
context.Response.Clear();
context.Response.AddHeader("Content-Disposition", "attachment; filename=" + fileName);
context.Response.AddHeader("Content-Length", bFile.Length.ToString());
context.Response.ContentType = contentType;
context.Response.OutputStream.Write(bFile, 0, bFile.Length);
context.Response.Flush();
context.Response.End();
SystemError.CreateErrorLog("下载结束了!");
}
}