zoukankan      html  css  js  c++  java
  • asp.net ashx一般处理程序实现async await异步操作

    目前项目存在页面展示大量图片,效率不高,考虑优化性能,改为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("下载结束了!");
        }
    }        
  • 相关阅读:
    sharepoint 2010 资料
    调试 SharePoint 解决方案
    定义不同模板的网站集
    作图工具
    struts2的优点
    get load
    什么是java的事物
    session的实现方式
    final 和static的关系
    各种大神的表单验证 感谢大神的辛苦
  • 原文地址:https://www.cnblogs.com/colder/p/7889736.html
Copyright © 2011-2022 走看看