【Azure APIM】APIM在上传文件的时候,请求的Payload是否有文件大小的限制呢? - LuBu0505/My-Code GitHub Wiki
问题描述
使用APIM + App Service的架构对外提供服务,其中一个接口为文件上传。在测试的时候,发现上传超过20MB的内容时候就会遇见报错,而不使用APIM时,通过直接访问App Service的上传文件接口(>50MB)也不会遇见这个问题。
那么,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对上传文件的大小是没有限制的。
【完】
注意:虽然APIM对文件上传的大小并没有限制,但由于APIM对请求的超时时间默认是300秒左右,所以如果上传的文件太大就会遇见超时报错。
参考资料
当在复杂的环境中面临问题,格物之道需:浊而静之徐清,安以动之徐生。 云中,恰是如此!