情形1:上傳下載時(shí)出此錯(cuò)誤:
在測(cè)試ASP做一個(gè)文件下載頁(yè)面,用ADODB.Stream來(lái)操作文件下載達(dá)到隱藏真實(shí)路徑的目的,因?yàn)槭潜镜販y(cè)試,所以一開(kāi)始用的是一個(gè)63.8M的文件做下載測(cè)試,卻提示如下的錯(cuò)誤:
Response 對(duì)象 錯(cuò)誤 'ASP 0251 : 80004005'
超過(guò)響應(yīng)緩沖區(qū)限制
/showuser.asp,行 0
此 ASP 頁(yè)的執(zhí)行造成響應(yīng)緩沖區(qū)超過(guò)其配置限制。
想起IIS6下面文件上傳默認(rèn)的是200K,默認(rèn)的緩沖會(huì)不會(huì)也有這個(gè)限制?于是將測(cè)試文件換成一個(gè)100K的,程序順利通過(guò),看來(lái)真是有這個(gè)限制,于是打開(kāi)c:\windows\system32\inesrv\下的metabase.xml來(lái)看,搜索Buffer,一共找到四個(gè),借助金山詞霸確定是572行的AspBufferingLimit="4194304",換算了一下是4096(4M),于是將測(cè)試下載的文件又換成一個(gè)3.8M的,程序也順利通過(guò),再將測(cè)試文件換成一個(gè)5.1M的,又出現(xiàn)上面的錯(cuò)誤,看來(lái)引起錯(cuò)誤的原因應(yīng)該是這個(gè)了,于是我在“4194304”加多了一個(gè)“0”,5.1的文件也可以順利下載了,問(wèn)題解決。
注意:改metabase.xml前必須先在服務(wù)里關(guān)閉iisadminservice服務(wù),改完之后再重啟IIS服務(wù),或者打開(kāi)IIS,在計(jì)算機(jī)名上點(diǎn)右鍵,選屬性,勾選第一項(xiàng)“允許直接編輯配置數(shù)據(jù)庫(kù)”,如果修改之后程序運(yùn)行超時(shí),可適當(dāng)調(diào)整默認(rèn)的超時(shí)時(shí)間,還有加大默認(rèn)緩沖會(huì)不會(huì)導(dǎo)致其它問(wèn)題我不清楚,由此引起的一切損失與本人無(wú)關(guān),因此請(qǐng)自行決定是否采用.
情形2:正常讀取記錄出此錯(cuò)誤:
本空間注:一般來(lái)說(shuō),這種錯(cuò)誤經(jīng)常并非真是IIS緩沖不夠,而是代碼錯(cuò)誤,如使用:do while not RS.Eof格式時(shí),忘了在其中加上RS.MoveNext導(dǎo)致的。
因?yàn)轫?yè)面中數(shù)據(jù)較多,有上千條,導(dǎo)致出現(xiàn)“超過(guò)響應(yīng)緩沖區(qū)限制。此 ASP 頁(yè)的執(zhí)行造成響應(yīng)緩沖區(qū)超過(guò)其配置限制?!?。
如果response.buffer=false這樣設(shè)的話,可以查出,但是好慢。怎么解決?
我們可以加大Buffer的緩沖區(qū),辦法是:
先在服務(wù)里關(guān)閉iisadminservice服務(wù)
找到windows\system32\inesrv\下的metabase.xml,
打開(kāi),找到 AspBufferingLimit 把他修改為需要的值,默認(rèn)為4194304,即4096KB
建議把它修改為41943040(40M)或適合的數(shù)值,取決于服務(wù)器內(nèi)存是否足夠大。
然后重啟iisadminservice服務(wù)。
注意事項(xiàng):
1、要注意服務(wù)器內(nèi)存量是否足夠。
2、還有因?yàn)閿?shù)據(jù)量比較大,相應(yīng)的還要修改ASP處理時(shí)間,即:
修改"AspScriptTimeout" 默認(rèn)值90 (秒)
修改"AspSessionTimeout" 默認(rèn)值20 (分鐘)
該文章在 2011/1/12 15:14:20 編輯過(guò)