对POST提交数据限制的解决方案

    

转载:

Code
 1由于微软对POST提交数据的大小进行了限制,当表单发送的数据量很大时,就会报错(错误 "ASP 0107 : 80004005")。原因是微软对用Request.Form()可接收的最大数据限制为100K字节。
 2
 3    问题的解决办法是,对于一个需要发送大数据的域,在提交表单前将数据拆分为小于限额的数份,分别放在数个hidden域中,同时把原有域清空,再正式提交表单。服务器端还是用Request.Form()读取各hidden域的数据,再按照顺序把他们拼接起来就行了。主要代码如下:
 4
 5注意:需要在Form中的HTML代码内指定一个DIV,以便向其中动态插入hidden域。
 6
 7====客户端示例代码====
 8
 9在Form中的HTML代码内加入:<div id=divHidden></div>,在Form标签中加入: onSubmit="return fnPreHandle(this)",将下面代码中的BigField换成您表单中提交大数据库的域的名称。
10
11JavaScript代码
12<script language=javascript>     
13//数据拆分,并放到相应的hidden域中,在Form的onSubmit事件中激发     
14function fnPreHandle(MyForm)     
15{     
16var iCount; //拆分为多少个域     
17var strData; //原始数据     
18var iMaxChars = 50000;//考虑到汉字为双字节,域的最大字符数限制为50K     
19var iBottleNeck = 2000000;//如果文章超过2M字,需要提示用户     
20var strHTML;     
21   
22//原始数据     
23strData = MyForm.BigField.value;     
24   
25//如果文章实在太长,需要提醒用户     
26if (strData.length > iBottleNeck)     
27{     
28if (confirm("您要发布的文章太长,建议您拆分为几部分分别发布。\n如果您坚持提交,注意需要较长时间才能提交成功。\n\n是否坚持提交?"== false)     
29return false;     
30}
     
31   
32iCount = parseInt(strData.length / iMaxChars) + 1;     
33   
34//hdnCount记录原数据域拆分为多少个子域     
35strHTML = "<input type=hidden name=hdnCount value=" + iCount + ">";     
36   
37//生成各子域的HTML代码     
38for (var i = 1; i <= iCount; i++)     
39{     
40strHTML = strHTML + "\n" + "<input type=hidden name=hdnBigField" + i + ">";     
41}
     
42   
43//在Form中DIV(divHidden)内动态插入各hidden域的HTML代码     
44document.all.divHidden.innerHTML = strHTML;     
45   
46//给各子域赋值     
47for (var i = 1; i <= iCount; i++)     
48{     
49MyForm.elements["hdnBigField" + i].value = strData.substring((i - 1* iMaxChars, i * iMaxChars);     
50}
     
51   
52//原数据域清空     
53MyForm.BigField.value = "";     
54}
     
55</script>    
56 
57
58====服务器端示例代码==== 
59
60ASP/Visual Basic代码
61<%     
62Dim strData     
63Dim intFieldCount     
64Dim i     
65   
66intFieldCount = Request.Form("hdnCount")     
67   
68For i=1 To intFieldCount     
69strData = strData & Request.Form("hdnBigfield" & i)     
70Next     
71   
72Response.Write strData     
73%>    

转载于:https://www.cnblogs.com/mooner/archive/2008/06/12/1218392.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
在使用ASP.NET进行POST提交XML数据时,遇到服务器错误500的问题,可能是由于以下几个原因导致的: 1. 代码错误:首先要检查代码是否存在语法错误、逻辑错误或其他问题。可以通过查看日志、调试或使用try-catch块来捕获异常信息,从而定位并解决代码问题。 2. XML数据格式错误:检查所发送的XML数据是否符合要求的格式,比如是否缺少必要的节点或属性,是否包含非法字符等。可以使用XML验证工具或在线XML验证网站对XML数据进行验证,以确保其正确性。 3. 服务器配置错误:检查服务器的配置文件(如web.config)是否正确设置。特别是检查有关XML数据容量限制、请求超时时间等相关配置项的设置,确保其与实际需求相符。 4. 权限问题:确保ASP.NET应用程序具有足够的权限来访问相关资源,并能够进行读写操作。可以检查应用程序池的身份验证和授权设置,以及文件夹和文件的访问权限。 5. 第三方组件或扩展错误:如果在项目中使用了第三方组件或扩展,可能存在其本身的Bug或不兼容性导致服务器错误。建议更新到最新版本的组件或扩展,并查阅相关文档或论坛以获取解决方案。 在解决服务器错误500时,可以通过逐步排查以上可能的原因,并根据具体错误消息和日志进行定位和解决。如果问题复杂或解决不了,可以寻求相关专业人士或技术支持的帮助。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值