作者:思归     微软MVP   http://blog.joycode.com/saucer/

我们在上传大文件时都遇到过这样或那样的问题。设置很大的maxRequestLength值并不能完全解决问题,因为ASP.NET会block直到把整个文件载入内存后,再加以处理。实际上,如果文件很大的话,我们经常会见到Internet Explorer显示 "The page cannot be displayed - Cannot find server or DNS Error",好像是怎么也catch不了这个错误。为什么?因为这是个client side错误,server side端的Application_Error是处理不到的,可以参考这个帖子研究一下产生这个错误的机理。

handling server error when upload file too large

解决的方法是利用隐含的HttpWorkerRequest,用它的GetPreloadedEntityBody 和 ReadEntityBody方法从IIS为ASP.NET建立的pipe里分块读取数据

IServiceProvider provider = (IServiceProvider) HttpContext.Current;
  HttpWorkerRequest wr = (HttpWorkerRequest) provider.GetService(typeof(HttpWorkerRequest));
  byte[] bs = wr.GetPreloadedEntityBody();
  ....
  if (!wr.IsEntireEntityBodyIsPreloaded())
  {
        int n = 1024;
        byte[] bs2 = new byte[n];
        while (wr.ReadEntityBody(bs2,n) >0)
       {
             .....
        }
  }

Chris Hynes为我们提供了这样的一个方案(用HttpModule),该方案除了允许你上传大文件外,还能实时显示上传进度:

ASP.NET Upload Magic Part 2

这里有他讲座的PPT文件:

Uploading with ASP.NET (part 1)

Uploading with ASP.NET (part 2)

用ASP.NET上传大文件相关推荐

  1. asp.net 上传大文件控件

    这段时间写了个asp.net 上传大文件控件.经过测试,在ie中可显示进度条.特此共享,望广大网友多提意见. 大文件上传控件(包含进度条) 使用说明如下: <summary>      上 ...

  2. Asp.Net 上传大文件专题(4)--利用ajax技术显示上传进度

    ====================================================== 注:本文源代码点此下载 ================================= ...

  3. asp.net 上传大文件解决方案(转)

    这次在项目中,用到了大文件上传,要上传的文件有100多m,于是研究现在国内使用的大文件上传的 组件发现用的比较多的有两个控件AspnetUpload 2.0和Lion.Web.UpLoadModule ...

  4. Asp.Net 上传大文件

    HttpModule.cs 代码 namespace WebUploadFile {     public class HttpUploadModule : IHttpModule     {     ...

  5. [转]Asp.Net 上传大文件专题(3)--从请求流中获取数据并保存为文件[下]

    转自:http://www.cnblogs.com/stg609/archive/2008/08/03/1259206.html 接着上一篇讲 3.4 读取剩余的请求       前面我们已经提到过R ...

  6. Asp.Net 上传大文件专题(3)--从请求流中获取数据并保存为文件[下]

        接着上一篇讲 3.4 读取剩余的请求       前面我们已经提到过ReadEntityBody (Byte[] buffer, Int32 size)方法,该方法可以用来读取客户端的请求数据 ...

  7. ASP无法上传大文件的解决方法

    一.错误提示--ASP 0104 : 80004005 (1)ASP 0104 : 80004005 问题:WIN2003无法上传较大的文件"Request 对象 错误 \'ASP 0104 ...

  8. asp.net core mvc上传大文件解决方案

    asp.net core mvc上传大文件解决方案 参考文章: (1)asp.net core mvc上传大文件解决方案 (2)https://www.cnblogs.com/eggtwo/p/988 ...

  9. [Asp.net]Uploadify上传大文件,Http error 500 解决方案

    [Asp.net]Uploadify上传大文件,Http error 500 解决方案 参考文章: (1)[Asp.net]Uploadify上传大文件,Http error 500 解决方案 (2) ...

最新文章

  1. 自学篇之--js 提取复选框和单选框的值 和纯css的3D按钮
  2. proc除了能用于oracle开发_能不能用于mysql开发_Oracle数据库开发(二).Linux下配置使用ProC...
  3. 【机器学习入门到精通系列】多变量线性回归(附详细代码)
  4. 【BZOJ-3262】陌上花开 CDQ分治(3维偏序)
  5. Bootstrap系列 -- 37. 基础导航样式
  6. java线程本地存储_[并发并行]_[C/C++]_[使用线程本地存储Thread Local Storage(TLS)-win32和pthread比较]...
  7. 公司有内部推荐的名额
  8. 系统学习深度学习(二十三)--SqueezeNet
  9. 腾讯正式开源高性能Hybrid框架VasSonic!
  10. Jquery 数组操作(转)
  11. visio画图复制粘贴到word_怎么将visio绘图导入Word(visio绘图插入word后如何调整大小)...
  12. 内网穿透,将内网地址映射为外网地址
  13. 【渝粤题库】陕西师范大学200931小学语文教学论 作业(高起专)
  14. Codeforces 633C Spy Syndrome 2(Trie+暴力)
  15. win7系统ie被篡改怎么解决
  16. 手把手教你搭建SpringCloud项目(二)生产者与消费者
  17. flea-jersey使用之Flea RESTful接口服务端接入
  18. 前端学习------眼球跟踪效果
  19. paddlepaddle CPU模型部署加速包 MKL-DNN
  20. 外卖系统外卖O2O系统开发功能与开发难点介绍

热门文章

  1. eas账号是什么意思_刚开始做抖音带货和好物推荐,如何布局抖音种草账号矩阵?...
  2. C mysql添加_MYSQL将表 B C 插入表A方法
  3. Python Qt GUI设计:QTableView、QListView、QListWidet、QTableWidget、QTreeWidget和QTreeWidgetltem表格和树类(提升篇—1)
  4. Python自动生成企业合同
  5. 在Python上使用OpenCV检测和跟踪行人
  6. C语言中的struct结构体对齐问题
  7. 一台服务器两个mysql_在一台服务器上安装两个或多个mysql的实现步骤_MySQL
  8. ROS与PCL中点云数据之间的转换
  9. 《DDIA》读书笔记
  10. L1-044 稳赢 (暴力法)