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("下载结束了!");
        }
    }        
  • 相关阅读:
    Dockfile 使用 非root 用户运行容器
    Latex 小记
    Tmux 小技巧
    配置本地 overleaf
    arm板载ubuntu18.04系统安装QT4.8.7
    移植32位QT程序到ubuntu18.04
    TLS1.0禁用问题
    TLS1.0禁用问题
    Delphi程序“自杀”的有效办法
    Delphi7程序出现“EOSError code8-存储不足”问题的分析与解决
  • 原文地址:https://www.cnblogs.com/colder/p/7889736.html
Copyright © 2011-2022 走看看