Azure Function 4.x进程外模式HTTP触发器POST超4MB数据超时问题
Azure Functions 4.x 进程外模式POST超过4MB请求超时解决办法
这个问题的根因是Azure Functions 4.x 进程外(隔离工作进程)模型存在两层独立的请求大小限制:
- Azure Functions宿主层的HTTP触发器限制为100MB,也就是你查到的官方文档说明的限制
- 隔离工作进程自身默认设置了4MB的最大请求体限制,这层限制是3.x进程内模型没有的,所以你在3.x版本可以正常运行,4.x进程外版本会出现超时或者请求被截断的问题
修复步骤
- 调整项目内工作进程的默认限制
在你的.NET隔离进程项目的Program.cs文件中,修改HostBuilder的配置,手动调高MaxRequestBodySize参数,示例代码如下:
var host = new HostBuilder() .ConfigureFunctionsWorkerDefaults(workerOptions => { workerOptions.Services.Configure<FunctionsWorkerOptions>(options => { // 设置为100MB,单位为字节,可根据实际需求调整大小 options.MaxRequestBodySize = 104857600; }); }) .Build(); host.Run();
- 调整Azure侧的应用配置(部署到云环境时需要)
在Azure门户的Function App配置页,添加如下应用设置:
- 配置项名称:
FUNCTIONS_REQUEST_BODY_SIZE_LIMIT - 配置值:
104857600
- (可选,Windows App Service计划需要)调整web.config的请求限制
如果你的Function App运行在Windows环境的App Service计划(非消费计划)下,还需要在项目根目录添加web.config文件,修改IIS的请求大小限制:
<?xml version="1.0" encoding="utf-8"?> <configuration> <system.webServer> <security> <requestFiltering> <requestLimits maxAllowedContentLength="104857600" /> </requestFiltering> </security> </system.webServer> </configuration>
内容的提问来源于stack exchange,提问作者user13616669
相关产品推荐
相关产品推荐

