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

ASP.NET Core 2.1调用API请求到达控制器耗时过长问题排查求助

问题分析与解决方案

问题定位

请求到达控制器前的17-18秒延迟,大概率出在ASP.NET Core请求管道的前置环节(与控制器处理逻辑无关),可能涉及服务器配置、中间件执行、请求内容处理或网络层面的问题,而非API业务代码本身。

排查与解决步骤

  • 启用请求管道日志追踪
    在Startup.cs中添加管道入口日志,对比控制器方法的日志时间,明确延迟区间:

    public void Configure(IApplicationBuilder app, ILogger<Startup> logger)
    {
        app.Use(async (context, next) =>
        {
            logger.LogInformation($"请求进入管道: {DateTime.Now:yyyy-MM-dd HH:mm:ss.fff}, Path: {context.Request.Path}");
            await next();
        });
    
        // 保留原有中间件配置,如UseMvc等
    }
    

    在控制器方法开头也添加日志,计算两个时间点的差值,确认延迟是否发生在管道到控制器的阶段。

  • 排查中间件顺序与耗时
    ASP.NET Core中间件按注册顺序执行,逐个排查可疑项:

    • 临时注释非核心中间件(如自定义日志、第三方认证组件),测试请求耗时是否降低
    • 给每个中间件添加耗时统计,定位具体拖慢流程的组件
  • 服务器配置检查

    • 若使用IIS:检查应用程序池的队列长度、进程回收策略(是否频繁回收)、快速失败保护状态;确认请求筛选规则未限制大体积请求
    • 若使用Kestrel:调整连接与请求体配置,避免因限制导致阻塞:
      public static IWebHostBuilder CreateWebHostBuilder(string[] args) =>
          WebHost.CreateDefaultBuilder(args)
              .UseKestrel(options =>
              {
                  options.Limits.MaxRequestBodySize = null; // 根据实际场景调整,取消不必要的请求体大小限制
              })
              .UseStartup<Startup>();
      
  • 请求内容与网络验证

    • 检查请求是否包含大体积Body(如上传文件、大量JSON),ASP.NET Core默认缓冲请求体,大内容会导致解析延迟
    • 直接在服务器本地调用API(跳过外部网络),若延迟消失则是客户端到服务器的网络问题;若依然存在,锁定为服务器内部问题
  • ASP.NET Core 2.1版本特定优化
    2.1版本存在部分已知性能问题,可针对性处理:

    • 升级Newtonsoft.Json到兼容的最新版本,解决旧版序列化/反序列化瓶颈
    • 若API内部调用其他服务,改用IHttpClientFactory管理HttpClient实例,避免频繁创建销毁导致的性能损耗
  • 禁用请求体缓冲(针对大请求场景)
    若请求体体积较大,可直接读取流而非依赖默认缓冲:

    [HttpPost]
    public async Task<IActionResult> YourAction()
    {
        using (var reader = new StreamReader(Request.Body, Encoding.UTF8, leaveOpen: true))
        {
            var requestContent = await reader.ReadToEndAsync();
            // 业务处理逻辑
        }
        return Ok();
    }
    

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.19 12:15:38