Windows Server 2003 IIS 6.0 預設限制 ASP 上傳檔案大小為 200 KB (204,800 Bytes),超過即報錯 Request object error 'ASP 0104 : 80004005'。ASP.NET (aspx) 不受此限制。本文提供三種解決方案,從 Metabase 直接編輯到腳本自動化與 Resource Kit 工具。
net stop iisadmin /y (會連帶停止 W3SVC 等)。C:\Windows\System32\inetsrv\MetaBase.xml (備份後用 Notepad++ 開啟)。AspMaxRequestEntityAllowed,預設值 204800。51200000 (50 MB)、104857600 (100 MB)、1073741824 (1 GB)。net start iisadmin (自動啟動 W3SVC)。iisreset 確保生效。


建立 SetAspUploadLimit.vbs:
' SetAspUploadLimit.vbs
Set providerObj = GetObject("winmgmts:/root/MicrosoftIISv2")
Set vdirObj = providerObj.Get("IIsWebVirtualDirSetting='W3SVC/1/ROOT'")
WScript.Echo "Before: " & vdirObj.AspMaxRequestEntityAllowed
vdirObj.AspMaxRequestEntityAllowed = 51200000 ' 50 MB
vdirObj.Put_()
WScript.Echo "After: " & vdirObj.AspMaxRequestEntityAllowed
以系統管理員身分執行:
cscript SetAspUploadLimit.vbs
LM\W3SVC。W3SVC → 新增 → 屬性 → 名稱:AspMaxRequestEntityAllowed、類型:DWORD、值:51200000 (或更大)。iisreset)。
| 屬性 | 預設值 | 建議調整值 | 說明 |
|---|---|---|---|
AspMaxRequestEntityAllowed | 204800 (200 KB) | 51200000 (50 MB) 以上 | ASP 最大請求實體主體大小 (位元組) |
AspScriptTimeout | 90 秒 | 300-600 秒 | 腳本執行逾時,大檔上傳需更長時間 |
AspProcessorThreadMax | 25 | 50-100 | ASP 處理序最大執行緒,高併發上傳需調大 |
AspRequestQueueMax | 3000 | 5000-10000 | 請求佇列長度 |
AspEnableParentPaths | FALSE | TRUE (若舊程式需父路徑) | 安全性考量,建議改寫程式避免使用 |
<configuration>
<system.web>
<!-- maxRequestLength 單位 KB,executionTimeout 單位秒 -->
<httpRuntime maxRequestLength="51200" executionTimeout="300" />
</system.web>
<system.webServer>
<!-- IIS 7+ 安全性限制,單位 Bytes -->
<security>
<requestFiltering>
<requestLimits maxAllowedContentLength="52428800" />
</requestFiltering>
</security>
</system.webServer>
</configuration>
upload.asp) + 表單 enctype="multipart/form-data"。w3wp.exe 記憶體/CPU,確保大檔上傳不導致應用程式集區回收或 OOM。