asp中出现这种错误 '80020009' 的解决方法

来源:岁月联盟 编辑:exp 时间:2012-09-27

IIS6 可以做以下调整。

先在服务里关闭iis admin service服务
找到windows/system32/inesrv/下的metabase.xml,
打开,找到ASPMaxRequestEntityAllowed 把他修改为需要的值,默认为204800,即200K
然后重启iis admin service服务

把它修改为51200000(50M)

IIS5.0/4.0 在注册表内 -

Description of the MaxClientRequestBuffer Registry Value
http://support.microsoft.com/?id=260694


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.

 

另外,在搜索微软的知识库的时候,发现在数据类型是text BLOB 的读取处理的时候,也有80020009错误

 

http://support.microsoft.com/default.aspx?scid=http://support.microsoft.com:80/support/kb/articles/Q175/2/39.asp&NoWebContent=1

When dealing with BLOB fields from Microsoft SQL Server, you must put them to the right of non-BLOB columns in the resultset. To be safe, you should also read the columns in left-to-right order, so if you have two BLOB columns as the last two columns in your resultset, read the first one and then the second. Do not read them in the reverse order.


数据读取的先后顺序,竟然也会出现这个问题。

 

另外

http://www.elearning4gurus.com/only4gurus/techlib/miscellaneous/CurrentFAQ-20021215.pdf

这里是 ASPFAQ 3.0 ,这里有很多ASP3.0稀奇古怪错误的介绍。

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
%>