Chris Hynes
我们在上传大文件时都遇到过这样或那样的问题。设置很大的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)
分享到:
相关推荐
WEBUPLOAD大文件传送C# asp.netWEBUPLOAD大文件传送C# asp.netWEBUPLOAD大文件传送C# asp.net
Socket文件传输源码 asp.net版Socket文件传输源码 asp.net版Socket文件传输源码 asp.net版Socket文件传输源码 asp.net版Socket文件传输源码 asp.net版
网络传输文件过程中,如果文件过大将会影响文件传送的效果和速度,如果将文件压缩之后再上传,不但可以提高传送速度,还可以节省大量的时间。本实例通过asp.net web应用程序中实现了文件的在线压缩功能。 本实例主要...
asp.net网络通信的例子,值得好好学习
Asp.net中My97DatePicker4.2日期的使用 Asp.net中DataList控件添加删除 Asp.net获取请求的用户信息IP地址 获取世界IP地址库显所在城市信息 MySQL事务处理 SQL内部常用函数 为gridview“删除”...
本书现场构建了一个完整的Internet网站,全书共分为10章...第10章是ASP.NET的进阶内容,讲解文件上传和E-mail的自动传送功能。本书可以作为ASP.NET程序设计人员的参考资料,也可以作为网站建设及维护人员的培训班教材
本书旨在引导读者深入ASP.NET的精髓,使读者迅速掌握用ASP.NET构建一个完整站点的技能。本书现场构建了一个完整的 Internet网站,全书共分为10章,第1章讲解基本概念,内容包括ASP.NET的设计理念和运行模型。第2章...
考虑到不同的企业使用的开发平台不同,我们已经为企业开发人员提供了完整的与数据库相结合的示例(ASP.NET,JSP,PHP)。开发人员能够非常容易的在自已的系统中实现断点续传功能。 产品特点如下: 1. 为TB级文件提供...
内容: Asp.net页面内传参数... Asp.net中My97DatePicker4.2日期的使用 Asp.net中DataList控件添加删除 Asp.net获取请求的用户信息IP地址 获取世界IP地址库显所在城市信息 MySQL事务处理 SQL内部常用函数
Asp.Net使用HttpWebRequest跨域上传,可以实现asp.net跨域文件上传或者大数传输
一个文件传输程序C#ASP.NETC#ASP.NETC#ASP.NET
介绍 尽管AJAX是种客户端技术,但实际上的开发...作为开始,使用Visual Studio 2005创建一个新的Web站点,注意把ASP.NET AJAX项目模板添加到新站点对话框,这个对话框包括一个"ASP.NET AJAX Enabled Web Site" 模板。
在ASP.NET Core中,如果在Kestrel中想使用HTTPS对站点进行加密传输,可以按照如下方式 申请证书 这一步就不详细说了,有免费的和收费的,申请完成之后会给你一个*.pfx结尾的文件。 添加NuGet包 nuget中...
HTTP Compression Module是一个ASP.NET页面和资源压缩模块,ASP.NET的VIEWSTAT虽然好用但是会使输出的HTML代码臃肿不堪,在带宽资源极为有限的国内表现的尤其明显,但凡ASP.NET的网站打开速度明显缓慢,造成了ASP...
在ASP.NET页面中推荐使用覆写(Override)而不是事件处理(Event Handler) 常用编码工具类,支持base64,md5,des,crc32 也谈谈技术面试 在C#里把ArrayList转换为Array 或 把Array转换为ArrayList C# 2.0 在.NET 2.0中...
主要介绍了ASP.NET Core单文件和多文件上传并保存到服务端的方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
在ASP.NET中,可以创建ASP.NET网站和ASP.NET应用程序,ASP.NET网站的网页元素包含可视元素和页面逻辑元素,并不包含designer.cs文件。而ASP.NET应用程序包含designer.cs文件。创建ASP.NET网站,首先需要创建网站,...
4.3.3 使用HTMLInputFile控件接受文件上传 4.4 小结 <br>第二部分 高级ASP.NET页面开发 <br>第5章 用用户控件创建自定义控件 <br>5.1 用用户控件包含标准内容 5.2 显露用户控件中的属性和...
本视频点播系统根据流媒体传输原理,在校园局域网的基础上模拟基于Web的视频点播系统,实现用户信息管理、视频文件的添加、删除、修改及在线播放和搜索功能。本系统是一个小型系统,我们采用基本的SQL Server数据库...