如何配置本地运行的Azure Functions V3以支持100MB文件上传
解决本地Azure Functions大文件上传的请求体大小限制问题
我之前也碰到过一模一样的问题!云端跑的时候大文件上传毫无压力,本地调试就一直报“请求体过大”,折腾了好久才找到根源:
Azure云端的Functions服务默认已经配置了适配大文件的请求体限制,但本地运行时用的Kestrel服务器默认有较小的上限,而且咱们常用的ASP.NET Core特性(比如[DisableRequestSizeLimit]或者[RequestSizeLimit(100000000)])在Functions本地环境里根本不生效——因为请求先经过Functions宿主的Kestrel处理,还没到你的函数代码就被拦截了。
解决方法很简单,直接在local.settings.json里添加Kestrel的配置就行:
{ "IsEncrypted": false, "Values": { "FUNCTIONS_WORKER_RUNTIME": "dotnet", // 保留你原来的其他配置项 }, "Host": { "LocalHttpPort": 7071, // 你的本地端口,不用改 "CORS": "*", // 保留原来的CORS配置 "Kestrel": { "Limits": { "MaxRequestBodySize": 104857600 // 这里设置成100MB对应的字节数(100*1024*1024) } } } }
配置完之后,一定要重启本地的Functions宿主,不然新配置不会生效。之后再试上传100MB的文件,应该就能正常处理了。
你提到的那个GitHub Issue(#5540)其实也讨论了这个本地与云端的配置差异问题,核心就是本地需要显式设置Kestrel的请求体大小,而云端已经默认帮咱们处理好了这些细节。
内容的提问来源于stack exchange,提问作者Mech0z
相关产品推荐
相关产品推荐

