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

.NET Core 5 Web API峰值压测下突发随机CORS错误排查

问题根因分析

你遇到的高负载下CORS错误本质不是CORS配置本身的问题,而是高并发下部分请求根本没有进入.NET Core的中间件处理管道,CORS头没有被注入,才触发了客户端的跨域错误,可以从以下几个方向定位解决:


1. 首先确认请求被IIS提前拦截

你返回的响应头是text/html、content-length:58,符合IIS默认错误响应的特征,500并发下很可能触发了IIS层面的请求队列限制,直接返回了503/超时错误,完全没有走到你写的CORS中间件逻辑:

  • 调整IIS应用程序池的队列长度:默认队列长度通常为1000,高并发下请求堆积很快会打满队列,建议调整到4000以上
  • 开启IIS失败请求跟踪,确认返回错误的状态码,验证是否是IIS层面直接拦截的请求
  • 检查web.config中是否有拦截OPTIONS预检请求的配置,确保OPTIONS动词可以正常传递到.NET Core应用

2. 中间件顺序错误导致CORS校验偶发失败

你当前的UseForwardedHeaders放在了UseEndpoints之后,属于严重的顺序错误:

  • UseForwardedHeaders必须放在整个中间件管道的最开头,早于UseRouting和UseCors,否则CORS中间件无法正确获取到经代理转发后的Origin请求头,会偶发出现跨域校验失败
  • 修正后的中间件顺序参考:
public void Configure(IApplicationBuilder app, IWebHostEnvironment env) {
    // 第一个就放转发头解析
    app.UseForwardedHeaders(new ForwardedHeadersOptions {
        ForwardedHeaders = ForwardedHeaders.XForwardedFor | ForwardedHeaders.XForwardedProto
    });
    AppDomain.CurrentDomain.SetData("ContentRootPath", env.ContentRootPath);
    AppDomain.CurrentDomain.SetData("WebRootPath", env.WebRootPath);

    app.UseRouting();
    app.UseCors(corsPolicy); // 放在UseRouting之后,UseAuthorization/UseEndpoints之前

    // 其他中间件
    if (env.IsDevelopment())
        app.UseExceptionHandler("/error-local-development");
    else {
        app.UseExceptionHandler("/error");
        app.UseHsts();
    }
    app.UseRequestLocalization(localizeOptions.Value);

    app.UseEndpoints(endpoints => {
        endpoints.MapControllers();
        endpoints.MapHub<RealTime>("/api/v1/realtime");
    });
}

3. 资源瓶颈导致请求超时

  • 数据库连接池不足:默认SQL Server连接池最大连接数为100,你500并发每个请求开2~3个数据库连接,峰值需要至少1000个连接,连接池满后请求会阻塞等待连接,触发超时。需要在数据库连接字符串中增加Max Pool Size=2000配置,放大连接池上限
  • 线程池饥饿:高并发下.NET默认线程池扩容速度较慢,会导致请求堆积超时。可以在Program.cs入口处增加最小线程数配置:
ThreadPool.SetMinThreads(workerThreads: 300, completionPortThreads: 300);

4. 额外修正CORS配置的小问题

你当前的跨域白名单中https://test.test.com/末尾多了斜杠,.NET Core的CORS校验是精确匹配的,正式环境如果请求来源不带末尾斜杠会校验失败,建议去掉末尾的斜杠。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.07 08:51:04