昨天給公司服務器重做了一下系統,遇到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,其中包含有與指定的字符代碼相關的字符。