您好,欢迎来到思海网络,我们将竭诚为您提供优质的服务! 诚征网络推广 | 网站备案 | 帮助中心 | 软件下载 | 购买流程 | 付款方式 | 联系我们 [ 会员登录/注册 ]
促销推广
客服中心
业务咨询
有事点击这里…  531199185
有事点击这里…  61352289
点击这里给我发消息  81721488
有事点击这里…  376585780
有事点击这里…  872642803
有事点击这里…  459248018
有事点击这里…  61352288
有事点击这里…  380791050
技术支持
有事点击这里…  714236853
有事点击这里…  719304487
有事点击这里…  1208894568
有事点击这里…  61352289
在线客服
有事点击这里…  531199185
有事点击这里…  61352288
有事点击这里…  983054746
有事点击这里…  893984210
当前位置:首页 >> 技术文章 >> 文章浏览
技术文章

调整IIS设置简化Windows Server客户端上传

添加时间:2011-12-9  添加: admin 

 许多网站都是通过Web浏览器让用户直接上传内容,但是这种方式缺乏用户与远端服务器之间的交互性,从而让他们的互动变得不那么容易。首先,在上传过程中基本没有什么反馈,有时在经历了漫长的等待后得到的唯一反馈却是一个讨厌的报错。
    尽管如此,使用浏览器来上传文件还是成为被广泛接受的文件传输方式。因为用户更喜欢它的简便,而不是费劲的去使用文件传输协议(FTP)的工具。
    虽然这种方式被广泛接受,但它并不能保证不出错。一个确认的微软IIS问题就是在处理大于48K的上传文件时会出现一个超时报错。有时这只是一次上传的失败,但其它时候这会让浏览器进入一个不停尝试重新发送数据的死循环。因为对于浏览器来说,没有一种针对这种特定情况的标准响应。
    这种挂起的原因是IIS使用一种如ASP的应用程序来处理客户端数据的上传。当客户端开始提交数据时,IIS将第一个48K的数据读入缓冲区,然后将其传递给应用程序进行处理。任何超出这48K的数据会处于等待状态直到应用程序请求传输,通常通过类似Request.BinaryRead(Request.TotalBytes)的命令来执行。如果应用程序没有请求,这些数据则处于等待连接状态。这是一个典型的413报错:请求实体过大。
    通常,按照上述规则进行良好的编码可以避免此类问题,但某些情况下可能需要使用特定的属性设置。例如,如果你的某个站点的上传是由第三方的ISAPI扩展来处理的,它没有遵循这种做法,此时就需要进行一些调整来克服48K的限制。这个限制不是一成不变的,它通过一个名为UploadReadAheadSize的IIS元数据(metabase)属性来定义。默认值为49152K,最高可以设为4GB。如果需要的话,你可以对一个单独的站点进行设置也可以设定整个IIS服务。
    这可能不是唯一需要设置的属性。你可能还需要修改maxRequestLength(在IIS6)或maxAllowedContentLength(在IIS7 +)的属性值来允许大型数据的上传,尽管它们的默认值也较大。
    在某些情况下,将UploadReadAheadSize的值设为零会很有帮助。这会强制IIS将提交的内容直接流向ISAPI扩展应用来处理该请求。这可能是在解决这个问题时首先值得尝试的方法,但是你也应该注意到关闭IIS应用程序(不处理预读缓冲区)可能带来的副作用。
    最后,请记住,增加UploadReadAheadSize的值会产生一个攻击面。如果这个值设置得很高,并且有人想利用通过上传文件来耗费带宽的方式攻击你的系统,他们将很容易得手。为了避免攻击,使用一个能够体现用户实际使用的值,并尽可能地坚持使用身份验证的方式,以确保上传者的身份值得信赖。

关键字:IIS、服务器

分享到:

顶部 】 【 关闭
版权所有:佛山思海电脑网络有限公司 ©1998-2024 All Rights Reserved.
联系电话:(0757)22630313、22633833
中华人民共和国增值电信业务经营许可证: 粤B1.B2-20030321 备案号:粤B2-20030321-1
网站公安备案编号:44060602000007 交互式栏目专项备案编号:200303DD003  
察察 工商 网安 举报有奖  警警  手机打开网站