我们在网站制作测试过程中会遇到过这种情况,Request.Form提交的数据太多了,所以导致IIS报告异常“堆栈溢出. 处理中的数据库超过允许的极限”。这是因为iis默认设置中最大只能接受200K的内容。因此就造成了这种现象。 下面小编会跟大家说说这种现象的解决办法。 IIS6 可以做以下调整。
先在服务器里关闭iis admin service服务
找到windowssystem32inesrv下的metabase.xml,打开,找到ASPMaxRequestEntityAllowed 把他修改为需要的值,默认为204800,即200K,然后重启iis admin service服务,把它修改为51200000(50M) IIS5.0/4.0 在注册表内 -
Description of the MaxClientRequestBuffer Registry Value
Default Sizes in IIS 4 and 5
In IIS 4.0, the default maximum size of request line and header fields is 2 megabytes (MB).
In IIS 5.0, this is reduced to 128 kilobytes (KB).
In IIS 5.0 with Windows 2000 Service Pack 4 installed, this is reduced to 16 KB.
另外小编在创新互联工作中也找到一种方法,现与大家分享:
提交页面的代码
<SCRIPT Language=javascript>
//分块上传
function FragmentUp()
{
var tlngFragmentSize = 51100;//50K
var tintFragmentCount = 0;
var tintI = 0;
var tstrContent = new String;
var tstrOuterHTML = new String;
tstrContent = document.form1.content_html.value;
tintFragmentCount = tstrContent.length / tlngFragmentSize + 1;
for(tintI=0;tintI<tintFragmentCount;tintI++){
tstrOuterHTML = tstrOuterHTML+"<INPUT type=""hidden"" name=""F07"">";
}
document.form1.F07.outerHTML = tstrOuterHTML;
for(tintI=0;tintI<tintFragmentCount;tintI++){
document.form1.F07[tintI].value = tstrContent.substr(0, tlngFragmentSize);
tstrContent = tstrContent.substr(tlngFragmentSize);
}
}
</SCRIPT>
<form name="form1">
<input type="hidden" name="F07">
<textarea name="content_html"></textarea>
</form>
后台接收处理的页面代码:
<%
dim content
for i=1 to request("F07").count
content=content&request("F07")(i)
next
%>