最新评论
Re:大文件上传之异常处理(原创) NewSea. 2012-02-05 18:23
不错.
Re:大文件上传之异常处理(原创) liuhh 2011-11-14 11:10
不错,收藏了
re: 大文件上传之异常处理(原创) 单凯 2008-08-19 10:42
为什么我的request.ContentLength 永元都是0
re: 大文件上传之异常处理(原创) 问天 2008-06-25 19:29
呃……谢谢楼主……
但,我是这么做的:
Protected Sub Application_BeginRequest(ByVal sender As Object, ByVal e As System.EventArgs)
Dim request As HttpRequest = HttpContext.Current.Request
If request.ContentLength > 1024000 Then
HttpContext.Current.Response.Redirect("/max.html")
End If
End Sub
检查Request的content length超过限制后便直接redirect到提示错误的页面……
反复测试都没有发现任何不良效果……服务端绝对不会等待浏览器把所有的数据都上传完……在Firefox / Opear / IE7 / Safari上面用户都会立刻看到错误的提示页面……
唯一的例外是IE6,该死的IE6还是好等上那么十几秒才能看到转跳页面…………完全不知何故…………
如果是要从防止服务器被攻击的角度考虑,倒是可以直接:
wr.CloseConnection()
所有浏览器都会立刻看到默认的错误页面……尝试在picasa上上传一个600M的假图片便是如此……
但,我是这么做的:
Protected Sub Application_BeginRequest(ByVal sender As Object, ByVal e As System.EventArgs)
Dim request As HttpRequest = HttpContext.Current.Request
If request.ContentLength > 1024000 Then
HttpContext.Current.Response.Redirect("/max.html")
End If
End Sub
检查Request的content length超过限制后便直接redirect到提示错误的页面……
反复测试都没有发现任何不良效果……服务端绝对不会等待浏览器把所有的数据都上传完……在Firefox / Opear / IE7 / Safari上面用户都会立刻看到错误的提示页面……
唯一的例外是IE6,该死的IE6还是好等上那么十几秒才能看到转跳页面…………完全不知何故…………
如果是要从防止服务器被攻击的角度考虑,倒是可以直接:
wr.CloseConnection()
所有浏览器都会立刻看到默认的错误页面……尝试在picasa上上传一个600M的假图片便是如此……
re: 大文件上传之异常处理(原创) 孙明明 2006-03-22 14:07
你是干什么的啊
re: [转帖]名字最骗人的十所大学 劲舞团 2006-02-26 09:07
不错。。。收藏了。。。。
re: 大文件上传之异常处理(原创) Edwin Liu 2005-11-29 09:45
HttpApplication app = sender as HttpApplication;
HttpWorkerRequest wr = GetWorkerRequest(app.Context);
HttpWorkerRequest wr = GetWorkerRequest(app.Context);
re: 大文件上传之异常处理(原创) tzchw 2005-11-28 14:30
有启发
re: 大文件上传之异常处理(原创) 2bno1 2005-11-28 13:37
我按照你说的方法试过,不行啊
还有,你的代码似乎也有点问题,因为wr.CloseConnection();在throw new Exception();后面,所以永远不会执行。
你确定是Context的长度大于maxRequestLength的时候才执行throw new Exception();的吗?
re: 大文件上传之异常处理(原创) 垃圾猪 2005-11-28 13:05
我说的这种方法是不出错的,你可以试一下
使用HttpWorkerRequest wr = ...........
然后抛出异常,再中断与客户的连接...
throw new Exception("文件太大了");
wr.CloseConnection();
使用HttpWorkerRequest wr = ...........
然后抛出异常,再中断与客户的连接...
throw new Exception("文件太大了");
wr.CloseConnection();
re: 大文件上传之异常处理(原创) bestcomy 2005-11-28 12:55
仍然是需要把客户端数据读完之后才能Redirect
其实还是内置的抛出HttpException的方法最好(没有完全读取客户端数据就结束了当前Request,可以防止攻击),不过当用户有要求的时候也没办法。
其实还是内置的抛出HttpException的方法最好(没有完全读取客户端数据就结束了当前Request,可以防止攻击),不过当用户有要求的时候也没办法。
re: 大文件上传之异常处理(原创) 2bno1 2005-11-28 11:16
呵呵,小猪,你说的方法我试过,但是发现行不通。
while ( contentlen - totalrecv >= received)
{
received =
wr.ReadEntityBody(buffer,
buffer.Length);
totalrecv += received;
}
received =
wr.ReadEntityBody(buffer, contentlen - totalrecv);
{
received =
wr.ReadEntityBody(buffer,
buffer.Length);
totalrecv += received;
}
received =
wr.ReadEntityBody(buffer, contentlen - totalrecv);
上面这段代码的目的就是使Context的长度小于maxRequestLength,这个步骤是必须的。
如你说的监测到内容过长直接抛出异常,这时候内容还是大于maxRequestLength,系统仍然会崩溃。
谢谢你的建议,我们可以继续讨论。
re: 大文件上传之异常处理(原创) 垃圾猪 2005-11-28 10:59
反正是视为无效文件
感觉到HttpWorkerRequest 开始工作时检测到内容过长直接抛出异常比较好
因为再执行下去也没必要了!
感觉到HttpWorkerRequest 开始工作时检测到内容过长直接抛出异常比较好
因为再执行下去也没必要了!
re: 大文件上传之异常处理(原创) jeseeqing 2005-11-28 10:35
你终于还是过来注册了。
以后这里就是你的家了
以后这里就是你的家了
