Asp附件無法上傳或回報Microsoft VBScript 執行階段錯誤錯誤'800a0005' 無效的程序呼叫或參數: 'chr' 的處理辦法
昨天給公司伺服器重做了一下系統,遇到Asp附件無法上傳,之前伺服器上使用好好的,怎麼重做了就不正常了,於是一番google,baidu,下面將解決辦法送出,幫助碰到該問題的朋友少走彎路:
1,權限問題
請確保您所上傳文件的資料夾"來賓使用者"有可寫入的權限,有的是存入資料庫的,也要有修改權限.
2,檔案大小限制
IIS 6 出於安全考慮, 預設最大請求200K(也即最大提交資料限額為200KByte, 204800Byte).
解決辦法:關閉IIS Admin Service 服務
開啟/Windows/system32/inesrv/metabase.xml
修改ASPMaxRequestEntityAllowed 的值為自己需要的, 預設為204800
啟動IIS Admin Service
修改之後,同時需要修改machine.config文件
Asp.net中,上傳檔案的預設大小是4096 KB,也就是4M,不過你可以在Web.config中更改這個資料。通常比較常用的方法是直接修改C:/WINDOWS/Microsoft.NET/Framework/v1.1.4322/CONFIG目錄下的machine.config檔(Framework版本會不同,用什麼版本就進什麼版本的目錄),尋找httpruntime在這一行將maxRequestLength的值改為理想的值,例如想要8M,就輸入8192。
3,中文系統,安裝的IIS的英文補丁
檢查,發現客戶之前使用的主機是windows 2003中文版,後來改換成windows英文版的空間,結果就出錯了.
一般呢,系統升級了IIS或是打過補丁後有時也會出現同樣的問題,我們只要在ASP檔案前加上一段程式碼
<!-- must be fist line in ASP -->
<% @LCID=4100 %>
4,語言問題
在控制面板裡把區域設定設定為【中國】
5,日期,時間問題
在控制面板裡把區域和語言選項,區域選項裡面,設定時間格式為:H:mm:ss,並在控制面板"日期時間「更改時區為北京.(之所以改這裡,是因為有的附件傳上去是用時間命名的,如果時間格式有錯,會導致程式報錯)
6,上傳的檔案所使用的中文名稱或路徑
使用ASP無元件上傳的話,因為不支援中文,所以需要檢查上傳路徑上是否包含中文.
7,報“Microsoft VBScript 運行時錯誤錯誤'800a0005' 無效的過程呼叫或參數: 'chr' ”錯誤(我的屬於這種問題)
Microsoft VBScript runtime error '800a0005' Invalid procedure call or argument: 'Chr' /admin/inc/UPLOAD.INC,
line 75 出現如此錯誤可能是伺服器用的是英文版本,因為Chr 函數傳回String,其中包含與指定的字元代碼相關的字元。
相關語法:Chr(charcode) 必要的charcode 參數是用來辨識某個字元的Long。說明:0 到31 之間的數字與標準的非列印ASCII 代碼相同。
例如,Chr(10) 可以傳回換行字元。 charcode 的正常範圍為0 – 255。然而,在DBCS 系統,charcode 的實際範圍為-32768 到65535。 注意: ChrB 函數作用於包含在String 中的位元組資料。 ChrB 總是傳回一個單字節,而不是傳回一個字符,一個字符可能是一個或兩個位元組。 ChrW 函數傳回包含Unicode 的String,若在不支援Unicode 的平台上,則其功能與Chr 函數相同。
所以把出錯的line75行程式碼:stemp=stemp&chr(AscW(ChrB(AscB(upfile_5xSoft_Stream.Read(1)))&ChrB(c))) 中的chr換成chrw就可以啦