一直搞得很混乱的IIS6.0数据上传与下载限制,这里作个总结,便于日后查看。
IIS6.0
默认上传文件大小:200k,即204800字节(网上部分地方说最大上传文件大小4M是错的,是下载不是上传)(这个值也是post值的最大值)
默认下载文件大小:4M,即4096000字节
ASP.NET
默认上传文件大小:4M,即4096000字节
这里就有一个问题了,如果文件上传不了,可能有两个地方有问题,一个是文件大小在IIS6.0中超过限制,另一个可能就是在ASP.NET中超过限制,而通常情况下,都是在IIS6.0上被限制了,因为IIS6.0设的限制值较小。所以网上部分人说的在web.config上修改,在configuration节点中增加如下节点是不会有改变的,那改变的是ASP.NET的默认值,那相当于第一扇门,尽管第一扇门过了,第二扇门IIS6.0的限制没有过,依旧没有办法上传大于200k的文件。
<system.web>
<httpRuntime maxRequestLength="10240" executionTimeout="600"/> <!-- 这里默认单位是K,所以这里表示10M -->
</system.web>
所以最关键的是修改IIS6.0的默认配置:
1、先在服务里关闭 iis admin service 服务。
2、找到 windows\system32\inetsrv\ 下的 metabase.xml 文件。
3、用纯文本方式打开,找到 ASPMaxRequestEntityAllowed 把它修改为需要的值(默认为:200000字节,差不多200K),注意默认单位是字节
4、存盘,然后重启 iis admin service 服务。
注意:metabase.xml是IIS正确运行的基础,修改时用记事本打开并保存即可,千万别用别的带格式转换的文本编辑工具编辑以防止出现问题。
附加知识:
在 IIS 6.0 中,无法下载超过4M的附件时,可以按以下步骤解决:
1、先在服务里关闭 iis admin service 服务。
2、找到 windows\system32\inetsrv\ 下的 metabase.xml 文件。
3、用纯文本方式打开,找到 AspBufferingLimit 把它修改为需要的值(可修改为20M即:20480000)。
4、存盘,然后重启 iis admin service 服务。
修改IIS6.0默认上传文件大小还有其他两种方法:
1. 到微软站点载了IIS6 Resource Kit Tools(http://www.microsoft.com/downloads/details.aspx?FamilyID=56FC92EE-A71A-4C73-B628-ADE629C89499&displaylang=en),安装后利用Metabase Explorer修改了(local)\LM\W3SVC\AspMaxRequestEntityAllowed属性(默认为200K=204800),修改为1G就是了;同时修改了AspScriptTimeout属性调整下时限,就可以上传大文件了。
2.用脚本语句进行修改,具体脚本可以参考:http://msdn.microsoft.com/en-us/library/aa690665,保存为相应格式文件,命令行模式下运行即可。
这里顺便记录一下IIS6.0GET与POST默认大小,Get基本是由浏览器限制的,默认安全的大小是1K,即1024字节,这对于在链接中携带数据有一定参考,如一个中文两个字节,理论上在url中传200个中文字是没有问题的,当然这里还没测试过,不知道用urlencode后是否占位更多。
POST的话IIS6.0默认最大是200KB(其实就是默认上传文件的大小,因为大文件就是用post进行上传的),而每个表单域限制是100KB
本文总结了IIS 6.0的默认上传和下载文件大小限制,以及如何通过修改metabase.xml文件或使用IIS6 Resource Kit Tools来调整这些限制。此外,还提到了ASP.NET的默认上传大小,并指出修改web.config中的httpRuntime节点只会改变ASP.NET的设置,而非IIS的限制。最后,介绍了解决IIS 6.0中超过4M附件下载问题的方法。

8721

被折叠的 条评论
为什么被折叠?



