Windows XP是美国微软公司研发的基于X86、X64架构的PC和平板电脑使用的操作系统 , 于2001年8月24日发布RTM版本 , 并于2001年10月25日开始零售 。其名字中“XP”的意思来自英文中的“体验(Experience)” 。该系统是继Windows 2000及Windows ME之后的下一代Windows操作系统 , 也是微软首个面向消费者且使用Windows NT5.1架构的操作系统 。WindowsServer具有可靠性、可用性、可伸缩性和安全性 , 这使其成为高度可靠的平台 。也因为它操作的简便,使用浏览器来上传文件还是成为被广泛接受的文件传输方式 。虽然这种方式被广泛接受 , 但它并不能保证不出错 。一个确认的微软IIS问题就是在处理大于48K的上传文件时会出现一个超时报错 。有时这只是一次上传的失败 , 但其它时候这会让浏览器进入一个不停尝试重新发送数据的死循环 。因为对于浏览器来说 , 没有一种针对这种特定情况的标准响应 。
这种挂起的原因是IIS使用一种如ASP的应用程序来处理客户端数据的上传 。当客户端开始提交数据时 , IIS将第一个48K的数据读入缓冲区 , 然后将其传递给应用程序进行处理 。任何超出这48K的数据会处于等待状态直到应用程序请求传输 , 通常通过类似Request.BinaryRead(Request.TotalBytes)的命令来执行 。如果应用程序没有请求 , 这些数据则处于等待连接状态 。这是一个典型的413报错:请求实体过大 。
通常 , 按照上述规则进行良好的编码可以避免此类问题 , 但某些情况下可能需要使用特定的属性设置 。例如 , 如果你的某个站点的上传是由第三方的ISAPI扩展来处理的 , 它没有遵循这种做法 , 此时就需要进行一些调整来克服48K的限制 。这个限制不是一成不变的 , 它通过一个名为UploadReadAheadSize的IIS元数据(metabase)属性来定义 。默认值为49152K , 最高可以设为4GB 。如果需要的话 , 你可以对一个单独的站点进行设置也可以设定整个IIS服务 。
这可能不是唯一需要设置的属性 。你可能还需要修改maxRequestLength(在IIS6)或maxAllowedContentLength(在IIS7 +)的属性值来允许大型数据的上传 , 尽管它们的默认值也较大 。
【Server如何简化?iis设置帮你忙】在某些情况下 , 将UploadReadAheadSize的值设为零会很有帮助 。这会强制IIS将提交的内容直接流向ISAPI扩展应用来处理该请求 。这可能是在解决这个问题时首先值得尝试的方法 , 但是你也应该注意到关闭IIS应用程序(不处理预读缓冲区)可能带来的副作用 。
最后 , 请记住 , 增加UploadReadAheadSize的值会产生一个攻击面 。如果这个值设置得很高 , 并且有人想利用通过上传文件来耗费带宽的方式攻击你的系统 , 他们将很容易得手 。为了避免攻击 , 使用一个能够体现用户实际使用的值 , 并尽可能地坚持使用身份验证的方式 , 以确保上传者的身份值得信赖 。
推荐阅读
- 几招简单处理WinXP异常现象
- 4大妙方处理通用卷无法停止故障
- 10大小窍门让vista系统更安全
- 提升内网杀毒软件的升级速度?巧妙设置卡巴
- 高手应付反复的磁盘失去有一招
- 巧治本地连接受限顽疾
- 系统打开过程中的隐患的处理妙方
- 应付数据库被挂马有绝招
- vista从基础到精通 10大系统设置总结