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