如何避开Windows2003里面IIS限制下载缓冲区的大小

以前使用ADODB.Stream来下载文件,这种方法可以防止盗链,其实是把文件的URL隐藏起来。以前在Windows2000里面都用得好好的,到了2003就出现了“ASP 0251超过响应缓冲区限制”的错误,到网上Google了一下,原来是windows2003里面的IIS6的限制,和限制上传的一样,要修改metabase.xml(这个怎么改可以到Google上搜索),心想,那就改吧,怎么办呢,MS让你改还能不改吗?
知道了怎么改,但是还是觉得不爽,那以后要改的东西不要太多了,MS修改一处我们就改一次。自己有去看了一下下载程序的源代码,IIS6里面限制的是缓冲区,看看能不能有什么地方可以修改一下的。看了一会儿代码,有个地方比较可疑,下面代码大家应该比较熟悉了
Response.BinaryWrite objStream.Read
Response.Flush
Response.Flush是把缓冲区里面的内容输出,那么这里是不是可以改的。查了一下资料,然后把代码改成:
Dim nBuffSize, nReadSize
nBuffSize = 1024 * 1024
nReadSize = 0
Do While intFilelength > nReadSize
If intFilelength - nReadSize > nBuffSize Then
Response.BinaryWrite objAdoStream.Read(nBuffSize)
Else
Response.BinaryWrite objAdoStream.Read(intFilelength - nReadSize)
End If
nReadSize = nReadSize + nBuffSize
Response.Flush
Loop

运行了一下,果然不再出错。原来限制的缓冲区就是使用ADODB.Stream读取的大小,这样就能够解决了,心里觉得太爽了。
看来不能盲目的跟随,一开始查到要改xml文件就去改的话也就发现不了这个解决方法了。本来想继续研究是否可以跳过上传的限制,发现上传限制的是Request的数据量,这个就没有办法了。

加支付宝好友偷能量挖...


评论(0)网络
阅读(106)喜欢(0)Asp/VBScript