ASP.NET Core 8 Web API为何无法并行处理多个请求?
问题原因分析
你的ASP.NET Core 8 Web API本身支持并行处理异步请求,问题出在浏览器的请求并发限制策略上,而非服务器端:
- 当你在同一个无痕窗口的多个标签页访问同一个URL时,浏览器会将这些请求归为同一会话上下文(即使是无痕模式,同一窗口内的标签页仍共享会话状态)。对于相同URL的GET请求,浏览器会默认采用请求排队机制——等待前一个请求完成后再发送下一个,以此避免重复请求、保证缓存一致性。这就导致你看到的串行执行现象:第一个请求耗时10秒,第二个等第一个完成后再开始,总耗时约19秒,第三个同理。
- 服务器端的代码没有问题:
Task.Delay(10_000)是异步非阻塞操作,执行时会释放当前线程回到线程池,服务器可以同时处理其他请求。你可以用Postman、curl等工具同时发送多个请求,会发现所有请求都能在约10秒内完成,这证明服务器是支持并行处理的。
验证方法
- 打开多个独立的无痕窗口(而非同一窗口的多个标签页)访问该URL,请求会并行执行。
- 修改每个请求的URL,添加不同的查询参数(比如
/?id=1、/?id=2),浏览器会将它们视为不同请求,从而并行发送。
内容的提问来源于stack exchange,提问作者Volodymyr V.
相关产品推荐
相关产品推荐

