昨天在改一個ASP的屏蔽列表內容HTML標籤的列表頁面的時候出現了錯誤
一開始出現錯誤提示:
Microsoft VBScript 執行階段錯誤 錯誤 '800a000d' 類型不符:
檢查發現是調用的函數名稱拼字錯誤,汗一個!!
後來完成的時候查了一下,還有種可能是IE的一個更新(IE6的SP1的補丁)和Win2003 Server有衝突也會出現這樣的問題,需要下載補丁解決
:
http://www.microsoft.com/downloads/details.aspx?FamilyID=254EB128-5053-48A7-8526-BD38215C74B2&displaylang=zh-cn
解決上面的問題後,出現如下錯誤提示
Response 對象 錯誤 'ASP 0251 : 80004005'
超過響應緩衝區限制
/list.asp,行 0
此 ASP 頁的執行造成響應緩衝區超過其配置限制。
於是從網路上搜尋問題,主要是下面的這種解決方案
轉自:小毅's blog
今天在測試ASP做一個檔案下載頁面,用ADODB.Stream來操作檔案下載達到隱藏真實路徑的目的,因為是本地測試,所以一開始用的是一個63.8M的檔案做下載測試,卻提示如下的錯誤:
Response 對象 錯誤 'ASP 0251 : 80004005'
超過響應緩衝區限制
/showuser.asp,行 0
此 ASP 頁的執行造成響應緩衝區超過其配置限制。
想起IIS6下面檔案上傳預設的是200K,預設的緩衝會不會也有這個限制?於是將測試檔案換成一個100K的,程式順利通過,看來真是有這個限制,於是開啟c:\windows\system32\inesrv\下的metabase.xml來看,搜尋Buffer,一共找到四個,藉助金山詞霸確定是572行的AspBufferingLimit="4194304",換算了一下是4096(4M),於是將測試下載的檔案又換成一個3.8M的,程式也順利通過,再將測試檔案換成一個5.1M的,又出現上面的錯誤,看來引起錯誤的原因應該是這個了,於是我在“4194304”加多了一個“0”,5.1的檔案也可以順利下載了,問題解決。
注意:改metabase.xml前必須先在服務裡關閉iisadminservice服務,改完之後再重啟IIS服務,或者開啟IIS,在電腦名稱上點右鍵,選屬性,勾選第一項“允許直接編輯設定資料庫”,如果修改之後程式運行逾時,可適當調整預設的逾時時間,還有加大預設緩衝會不會導致其它問題我不清楚,由此引起的一切損失與本人無關,因此請自行決定是否採用.
注意事項:
1、要注意伺服器記憶體量是否足夠。
2、還有因為資料量比較大,相應的還要修改ASP處理時間,即:
修改"AspScriptTimeout" 預設值90 (秒)
修改"AspSessionTimeout" 預設值20 (分鐘)
可是程式只是一個列表頁面沒有用到上傳或下載檔案,而且我將SQL語句從 “*所有” 減到“top1000”、“top500”直到“top1”問題依舊,於是排除這個問題的可能性,繼續尋找。
由於發現頁面開啟的非常緩慢,最後才報這樣的錯誤,猜想是否是列表的迴圈有問題(如死迴圈),於是檢查程式,果真是這裡的問題,修改後解決!最後上網查詢該問題的解決方案,還真有人提到,就是死迴圈造成的,在汗一下。
希望對遇到這樣問題的朋友能有點協助。