萬盛學電腦網

您现在的位置: 萬盛學電腦網 >> 作業系統 >  >> Windows Server 2003 教學

Windows Server 2003 IIS 6.0 解決 ASP 上傳大檔案 200KB 限制完整方案

Windows Server 2003 IIS 6.0 預設限制 ASP 上傳檔案大小為 200 KB (204,800 Bytes),超過即報錯 Request object error 'ASP 0104 : 80004005'。ASP.NET (aspx) 不受此限制。本文提供三種解決方案,從 Metabase 直接編輯到腳本自動化與 Resource Kit 工具。

方案一:編輯 Metabase.xml (標準做法)

  1. 開啟 IIS 管理員 → 右鍵 本機電腦 → 內容 → 勾選 允許直接編輯設定資料庫。
  2. 停止 IIS Admin Service:
    net stop iisadmin /y (會連帶停止 W3SVC 等)。
  3. 編輯 C:\Windows\System32\inetsrv\MetaBase.xml (備份後用 Notepad++ 開啟)。
  4. 搜尋 AspMaxRequestEntityAllowed,預設值 204800。
  5. 修改為所需位元組數,例如:
    51200000 (50 MB)、104857600 (100 MB)、1073741824 (1 GB)。
  6. 儲存檔案,重新啟動 IIS Admin Service:
    net start iisadmin (自動啟動 W3SVC)。
  7. 執行 iisreset 確保生效。

方案二:WMI 腳本自動修改 (適合批次部署)

建立 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

方案三:IIS 6.0 Resource Kit Tools - Metabase Explorer (圖形化)

  1. 下載安裝 IIS 6.0 Resource Kit Tools。
  2. 啟動 Metabase Explorer (開始 → 程式集 → IIS Resources → Metabase Explorer)。
  3. 連線至本機 (local),展開 LM\W3SVC。
  4. 右鍵 W3SVC → 新增 → 屬性 → 名稱:AspMaxRequestEntityAllowed、類型:DWORD、值:51200000 (或更大)。
  5. 若屬性已存在則直接修改值。
  6. 無需重啟 IIS,即時生效 (但建議 iisreset)。

關鍵相關屬性同步調整 (避免其他限制觸發)

屬性預設值建議調整值說明
AspMaxRequestEntityAllowed204800 (200 KB)51200000 (50 MB) 以上ASP 最大請求實體主體大小 (位元組)
AspScriptTimeout90 秒300-600 秒腳本執行逾時,大檔上傳需更長時間
AspProcessorThreadMax2550-100ASP 處理序最大執行緒,高併發上傳需調大
AspRequestQueueMax30005000-10000請求佇列長度
AspEnableParentPathsFALSETRUE (若舊程式需父路徑)安全性考量,建議改寫程式避免使用

ASP.NET (aspx) 上傳大檔案設定 (web.config)

<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>

驗證與測試

  1. 建立簡單 ASP 上傳頁面 (upload.asp) + 表單 enctype="multipart/form-data"。
  2. 測試上傳 10MB、50MB、100MB 檔案,確認無錯誤且檔案完整 (MD5 比對)。
  3. 監控 w3wp.exe 記憶體/CPU,確保大檔上傳不導致應用程式集區回收或 OOM。

安全性警示

  • 放大上傳限制增加 DoS 風險 (大量大檔上傳耗盡頻寬/磁碟/記憶體)。
  • 必須配合:驗證/授權檢查、檔案類型白名單、防毒掃描、儲存配額、速率限制 (IIS 進階/模組/第三方 WAF)。
  • 生產環境建議 上傳至獨立儲存磁碟區,隔離系統磁碟風險。
copyright © 萬盛學電腦網 all rights reserved