| 關卡 | 配置位置 | 預設值 | 控制範圍 |
| ASP.NET 執行階段 | web.config → <httpRuntime maxRequestLength="..." /> | 4 MB (4096 KB) | ASP.NET 管線處理的請求體大小 |
| IIS 核心請求篩選 | IIS 管理員 → 請求篩選 → 編輯功能設定 → 允許的最大內容長度 或 web.config → <security> → <requestFiltering> → <requestLimits maxAllowedContentLength="..." /> | 30 MB (30,000,000 bytes) | 所有經過 IIS 核心的請求體大小 (含靜態、PHP、Python、Node.js) |
單位陷阱:maxRequestLength 單位 = KB;maxAllowedContentLength 單位 = Bytes。
目標:支援 500 MB 上傳 (示例)
步驟一:配置 ASP.NET 限制 (web.config)
<configuration>
<system.web>
<!-- maxRequestLength 單位 KB,500MB = 512,000 KB -->
<httpRuntime
maxRequestLength="512000"
executionTimeout="3600"
requestValidationMode="2.0"
/>
</system.web>
</configuration>
executionTimeout:請求執行超時 (秒),大文件上傳需放大 (如 3600 秒 = 1 小時)。
requestValidationMode="2.0":相容舊版驗證模式 (可選)。
步驟二:配置 IIS 請求篩選限制 (web.config + 圖形介面)
方法 A:web.config (推薦,版本控制、自動化部署)
<configuration>
<system.webServer>
<security>
<requestFiltering>
<!-- maxAllowedContentLength 單位 Bytes,500MB = 524,288,000 Bytes -->
<requestLimits maxAllowedContentLength="524288000" />
</requestFiltering>
</security>
</system.webServer>
</configuration>
方法 B:IIS 管理員圖形介面
- 打開 IIS 管理員 → 選中網站/應用程式。
- 功能視圖雙擊 請求篩選。
- 右側動作欄點擊 編輯功能設定。
- 允許的最大內容長度 (Bytes):輸入
524288000。
- 確定 → 自動寫入
web.config。
步驟三:驗證生效
iisreset (確保配置重載)。
- 瀏覽器/Postman/curl 上傳 500MB 測試文件:
curl -X POST -F "file=@test_500mb.dat" https://your-site/upload
- 成功返回 200/201,無 404.13 / 500.19 / 413 錯誤。
常見錯誤碼對照表
| 錯誤碼 | 含義 | 原因 | 解決 |
| 404.13 | Content Length Too Large | 超過 maxAllowedContentLength | 增大 requestFiltering requestLimits |
| 500.19 | Config Error | web.config 語法錯誤/節點重複/權限 | 檢查 XML 格式、節點唯一性 |
| 413 | Payload Too Large | 反向代理 (Nginx/ARR) 限制 | 調整代理 client_max_body_size |
| Request Timeout | 執行超時 | 超過 executionTimeout / connectionTimeout | 增大超時、啟用分片上傳 |
進階:超大文件 (GB 級) 上傳最佳實踐
- ❌ 不要單次 POST 巨型文件:瀏覽器/代理/防火牆/殺毒軟體任一環節可能截斷/超時。
- ✅ 分片上傳 (Chunked Upload):前端切片 (如 5MB/片) → 並發/串列上傳 → 後端合併 (或對象存儲分片上傳 API)。
庫:WebUploader、Plupload、Uppy、Dropzone.js、Tus.io (開放協議)。
- ✅ 直傳對象存儲 (OSS/S3/COS):前端獲取簽名/STS 憑證 → 直傳雲存儲 → 回調業務伺服器入庫。
源站零流量、零壓力、天然支援斷點續傳、多區域加速。
- ✅ 啟用 IIS 輸出快取/壓縮:上傳接口通常不需快取,但下載/預覽接口必開。
總結
IIS 7+ 上傳大文件 = 雙重限制雙重破。
maxRequestLength (KB) + maxAllowedContentLength (Bytes) 同步放大。
單位不搞錯、超時同放大、驗證必跑通。
GB 級走分片/直傳 OSS,別硬抗單次 POST。