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