【Azure APIM】APIM在上傳文件的時候,請求的Payload是否有文件大小的限制呢?
問題描述
使用APIM + App Service的架構對外提供服務,其中一個接口為文件上傳。在測試的時候,發現上傳超過20MB的內容時候就會遇見報錯,而不使用APIM時,通過直接訪問App Service的上傳文件接口(>50MB)也不會遇見這個問題。
## APIM返回的錯誤信息為500: Internal Server error

## APIM 執行超時

那么,APIM是否會有對上傳文件的大小限制呢?
問題解答
查看官網文檔( API Management 資源限制: https://docs.azure.cn/zh-cn/azure-resource-manager/management/azure-subscription-service-limits?toc=%2Fapi-management%2Ftoc.json&bc=%2Fapi-management%2Fbreadcrumb%2Ftoc.json#azure-api-management-limits ) , 上傳文件的大小是沒有限制的。

所以,以上的測試中,出現大于20MB后久無法完成文件上傳的問題,根源可能是與后端服務 App Service的配置或處理能力相關。
- App Service 有時在上傳超過 14MB 的文件時, 會返回 500 或 502 錯誤,尤其是在 multipart/form-data 上傳場景中。
- App Service 的 Kestrel 服務器默認的 MaxRequestBodySize 和 MultipartBodyLengthLimit 可能需要手動配置為更大的值,例如 200MB 或更高。
為了驗證不是APIM本身對上傳文件的大小限制,把后端服務修改為Storage Account來進行驗證。最后證明APIM對上傳文件的大小是沒有限制的。

隨后測試,發現可以上傳大于500MB的文件,在59s就可以上傳到Storage Account中。

【完】
注意:雖然APIM對文件上傳的大小并沒有限制,但由于APIM對請求的超時時間默認是300秒左右,所以如果上傳的文件太大就會遇見超時報錯。
參考資料
當在復雜的環境中面臨問題,格物之道需:濁而靜之徐清,安以動之徐生。 云中,恰是如此!

浙公網安備 33010602011771號