两个长度限制问题的分析(来源于项目)
一、问题起因
在某项目释放后Bug统计的附件《释放后问题》里有:   
问题
原因
分析
备注
CSV处理时,如果处理的主题数过多,发生URL参数上限的错误;
可变长度的参数通过URL方式传递,会造成这种潜在的错误发生。
1、属于2次发生问题,开发方面没有及时通过checklist等方式向组员传达相关注意事项;
2、测试时没有作大批量数据的测试;
1、作为经验添加至CheckList中,加强组内共享、检查的效果;
2、加强测试点是否完备的检查,重点关注对开发方面共性问题的测试;
通过对模块原有GUI状况确认,进行CSV输出时,输出结果很大的场合,CSV文件的内容不能输出。
没有考虑到POST数据量存在128K的大小限制。
这属于新问题,以前从未遇见过,也没有进行过大规模的数据量测试
已将此类检查列出CheckList中
做为一种经验积累,这些问题、原因及解决办法将被列入Checklist,那么:
第一个问题:URL参数上限的提法准确吗?上限是多少?
第二个问题:为什么POST时数据有限制?限制是128K吗?  
二、问题分析
1、第一个:
1)URL不存在参数上限的说法。该问题实际是IE对URL有长度限制的问题。
2)HTTP协议规范也没有对URL长度进行限制。这个限制是特定的浏览器及服务器对它的限制。IE对URL长度的限制是2083字节(2K+35)。对于其他浏览器,如Netscape、FireFox等,理论上没有长度限制,其限制取决于操作系统的支持。[参1]
3)“可变长度的参数通过URL方式传递”实际是说提交表单时使用了GET方法,而不是POST方法。造成这种潜在错误的是使用GET方法提交表单数据。因为GET方法将数据放在URL里传递给服务器处理。
4)注意这个限制是整个URL长度,而不仅仅是你的参数值数据长度。
5)既然是IE对URL长度的限制,那么不管是GET方法还是POST方法都存在这个限制。
(关于FORM的GET和POST方法具体内容请参考相关资料[参2])  
建议:
1)了解应用程序所在的环境,如Web应用的浏览器、服务器环境,了解其特定的参数限制情况。
2)提交复杂数据尽量使用POST方法。注意FORM不写method属性时默认是使用GET方法。
结论(写入Checklist):
对使用GET方法提交数据时,在IE环境下,需要考虑URL长度2083字节的限制。 
2、第二个:
1)理论上讲,POST是没有大小限制的。HTTP协议规范也没有进行大小限制。
2)“POST数据量存在128K的大小限制”不够准确,POST数据是没有限制的,起限制作用的是服务器的处理程序的处理能力。
3)对于ASP程序,Request对象处理每个表单域时存在100K的数据长度限制。但如果使用Request.BinaryRead则没有这个限制。对于需要处理超过100K表单域数据的解决办法,请参考后面的[参3]。
4)由这个延伸出去,对于IIS 6.0,微软出于安全考虑,加大了限制[参4]。我们还需要注意:
IIS 6.0默认ASP POST数据量最大为200KB,每个表单域限制是100KB。
IIS 6.0默认上传文件的最大大小是4MB。
IIS 6.0默认最大请求头是16KB。
IIS 6.0之前没有这些限制。
建议:
1)弄清楚运行环境的默认设定值有助于你的设计及对出现的问题做快速的解决。
2)应该考虑服务器版本。各个版本的IIS对这些参数的默认设定都不一样,有必要的话,找资料整理出一份对照表。这样开发与测试时都有个参考。
3)IIS 6.0的这些限制实际只是它的默认设定值而已,实际应用环境你可以修改它们。
在WINNT/system32/inetsrv/MetaBase.xml里默认定义了:
        AspBufferingLimit="4194304"           对应于上传文件最大大小
        AspMaxRequestEntityAllowed="204800"    对应于POST最大数据量
...
结论(写入Checklist):
使用ASP时,需要考虑POST表单每个域一般读取处理时有100KB的限制。充分考虑是否使用Request.Binary。 
参考资料:
1、Maximum URL Length Is 2,083 Characters in Internet Explorer 
2、Hypertext Transfer Protocol--HTTP/1.1
3、PRB: Error "Request Object, ASP 0107 (0x80004005)" When You Post a Form
4、IIS 6.0 Troubleshooting [Client Requests Error-out or Time-out一节]

ASP.NET 参数传递,长度限制,及使用注意事项。相关推荐

  1. 微软kestrel服务器开启,asp.net-core - 如何在ASP.NET Kestrel服务器中设置TCP待办事项 - SO中文参考 - www.soinside.com...

    由于当前的ASP .NET Core版本(v3.0)对TCP积压进行了硬编码,因此我可以利用Easyhook解决此问题.class WinsocksHook { /// /// https://doc ...

  2. 你以为的ASP.NET文件上传大小限制是你以为的吗

    我们以为的文件大小限制 我们大家都知道ASP.NET为我们提供了文件上传服务器控件FileUpload,默认情况下可上传的最大文件为4M,如果要改变可上传文件大小限制,那么我们可以在web.confi ...

  3. 在 ASP.NET 中执行 URL 重写

    在 ASP.NET 中执行 URL 重写 发布日期: 8/23/2004 | 更新日期: 8/23/2004 Scott Mitchell 4GuysFromRolla.com 适用范围: Micro ...

  4. Asp.net MVC突然变慢,缓存消失的一种原因

    今天使用Sqlite数据库时,在插入数据后,网站变慢.仔细检查代码,没有发现异常,只有一点:缓存莫名消失.缓存策略没有设置依赖性,百思不得其解:数据库改变,导致缓存消失?起初以为是sqlite的问题, ...

  5. ASP.Net服务性能优化原则

    理理Asp.net性能相关的问题及注意事项.   以下这些内容,全部是经验之谈.如果你有别的建议,也可以从后台发给我.   服务器性能问题,通常在数据少的时候不会显现,也无需太多关注.但一旦数据量大了 ...

  6. [转载]保护 ASP.NET 应用程序的安全

    查看全部的安全性指导主题 Microsoft Corporation 本单元概要 保护 ASP.NET Web 应用程序依赖于完全受到保护的网络.主机和平台基础结构.如果果真如此,攻击者将试图利用 W ...

  7. 保护 ASP.NET 应用程序的安全

    本单元概要 保护 ASP.NET Web 应用程序依赖于完全受到保护的网络.主机和平台基础结构.如果果真如此,攻击者将试图利用 Web 应用程序和 Web 服务(它们通常侦听端口 80)中的漏洞.如果 ...

  8. include virtual引入html文件,ASP文件引用include file和include virtual两种用法

    在 ASP 编程中,我们经常遇到需要重复使用的模块代码,通常我们将这些模块代码保存为一个单独的文件,需要使用此模块代码时,在程序中通过 #include 指令引用此文件,这样使得工作效率和程序可读性大 ...

  9. Javascript Array和String的互转换。

    Array类可以如下定义: var aValues = new Array(); 如果预先知道数组的长度,可以用参数传递长度 var aValues = new Array(20); -------- ...

  10. java html模板隐情mini,HTML A标签简单问题

    满意答案 回复问题补充: 我是说你的 aa.asp 中没有锚点 bbb?aa=VVV 不是说你的 aa.asp 中没有锚点 bbb 看清楚了再说我到底有没有乱说吧 ------------------ ...

最新文章

  1. exist not exist 分析
  2. linux awk命令用途,Linux:“awk”命令的妙用
  3. Objecttive-C 创建多线程
  4. Java Stream:计数始终是计数吗?
  5. web面试常见问题补充
  6. Android Studio系列教程一--下载与安装
  7. 种树(codevs 1768)
  8. 关于cmd如何进出文件夹
  9. 12.整数转罗马数字-LeetCode
  10. 用Vue来实现音乐播放器(八):自动轮播图啊
  11. KVM详解(六)——KVM虚拟机快照
  12. DEV-c++中sort的用法
  13. Ubuntu - 新建管理员用户
  14. matlab生成的图片有边,科学网—图片空白边缘处理/统计直方图---matlab/保存生成高质量的清晰图 - 杨小林的博文...
  15. Mac 安装Nessus
  16. PHP云尚发卡,搭建个人发卡平台教程:云尚发卡平台搭建
  17. JS计算两个数组的交集、差集、并集、补集(多种实现方式)
  18. Python之建模规划篇--线性规划
  19. 函数极限和无穷大 函数各种情况极限的定义
  20. 服务器芯片组 c242评测,完胜690!最详尽的C68G芯片组性能评测

热门文章

  1. 【手写数字识别】基于matlab PCA手写数字识别【含Matlab源码 309期】
  2. if __name__ == __main___if __name__ == #x27;__main__#x27;: 究竟起什么作用,阅读本文后,其他文章不必再看...
  3. 若泽数据 巨人_面部识别巨人拒绝分享有关其算法数据集的详细信息
  4. python更换证件照背景
  5. python获取文件列表失败_python – Pytesseract没有这样的文件或目录错误
  6. 时光 php,ctphp-php教程-时光划过那刹那-PHP教程--创业的风,吹向了年轻之长藤个人博客网站...
  7. 16/32/64位平台下char、short、int、long、指针等类型分别占多少字节,操作系统可以使用的最大内存空间为多大?
  8. 微信公众号网页授权代码优化过程(三)
  9. prototype和__proto__的概念
  10. php基础语法学习汇总