You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

.NET 8独立模式Azure Function本地返回后报RequestTimedOut错误

问题分析与解决方法

错误原因

你遇到的RequestTimedOut错误并非函数内部HttpClient超时导致,而是Azure Functions 本地Grpc代理的超时限制。独立模式下,本地Functions Runtime通过Grpc与前端代理通信,代理默认超时为10分钟(300秒),你的函数运行14分钟已超出该阈值,因此即使函数正常执行完成并返回响应,代理端已触发超时报错。

解决方案

1. 调整本地代理超时配置

在local.settings.json中添加FUNCTIONS_HTTPWORKER_TIMEOUT配置,设置为大于函数运行时长的数值(单位:秒),比如30分钟(1800秒):

{
  "IsEncrypted": false,
  "Values": {
    "AzureWebJobsStorage": "UseDevelopmentStorage=true",
    "FUNCTIONS_WORKER_RUNTIME": "dotnet-isolated",
    "FUNCTIONS_HTTPWORKER_TIMEOUT": "1800"
  }
}

该配置控制Grpc代理等待函数响应的超时时间,需确保其值不超过host.json中设置的functionTimeout。

2. 确保函数内部HttpClient超时(若使用)

如果你的ProcessOrdData方法中使用了HttpClient,需单独设置其超时时间,避免内部请求提前终止:

  • 直接实例化HttpClient时设置:
    var httpClient = new HttpClient
    {
        Timeout = TimeSpan.FromMinutes(20) // 设为大于函数实际运行时长的值
    };
    
  • 依赖注入方式配置(推荐):在Program.cs中添加HttpClient配置:
    var host = new HostBuilder()
        .ConfigureFunctionsWebApplication()
        .ConfigureLogging(builder =>
        {
            builder.AddFilter("Microsoft.EntityFrameworkCore", LogLevel.Warning);
        })
        .ConfigureServices(services =>
        {
            services.AddHttpClient("LongRunningClient")
                .ConfigureHttpClient(client =>
                {
                    client.Timeout = TimeSpan.FromMinutes(20);
                });
        })
        .Build();
    
    host.Run();
    
    之后在函数中通过IHttpClientFactory获取该客户端使用。

3. 额外说明

  • host.json中的functionTimeout是函数本身的执行超时上限,需保持大于函数实际运行时长;
  • 该问题仅在本地独立模式开发时出现,部署到Azure平台后,HTTP请求超时默认230秒,若需更长运行时间,仍需考虑异步处理,但你暂不想使用Durable函数的话,本地开发调整上述配置即可解决当前报错。

内容的提问来源于stack exchange,提问作者Murray Foxcroft

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.26 20:35:29