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("下载结束了!");
        }
    }        
  • 相关阅读:
    hdu 4864(2) 线段树
    hdu 4864
    Codeforces Round #256 (Div. 2)
    BestCoder Round #1 1001 && 1002 hdu 4857 4858
    [Groovy]Parse properties file in Groovy
    [Shell]Shell学习笔记之for
    [转]Groovy Goodness
    SoapUI Properties的使用
    [转]Groovy One Liners to Impress Your Friends
    How can I use wget in Windows
  • 原文地址:https://www.cnblogs.com/colder/p/7889736.html
Copyright © 2011-2022 走看看