asp.net ashx一般处理程序实现async await异步操作
2017-11-24 11:25 假面Wilson 阅读(1927) 评论(0) 编辑 收藏 举报目前项目存在页面展示大量图片,效率不高,考虑优化性能,改为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("下载结束了!"); } }