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

.NET Framework 4.0同端点并发请求问题:WebMethod为何串行执行?

并发请求串行处理的原因及解决思路

你代码里的[WebMethod(true)]是[WebMethod(EnableSession = true)]的简写,这就是导致50个并发请求被逐个处理的核心原因:

  • ASP.NET对于启用Session的请求,会默认施加独占Session锁:只要是来自同一个Session的请求,ASP.NET会强制串行处理——第一个请求拿到锁后,后续同Session的请求必须等前一个请求完成释放锁才能执行。哪怕你的方法名带Async,只要开启了Session支持,这个锁机制就会生效,直接阻断同Session的并发处理。
  • 当然如果服务器的maxConcurrentRequestsPerCPU等全局并发配置设得过低,也可能限制整体并发能力,但从你的场景来看,Session锁是最可能的诱因。

对应的解决方式

  • 如果你的方法根本不需要访问Session,直接把[WebMethod(true)]改成[WebMethod(false)],关闭Session支持,同客户端的并发请求就能被并行处理了。
  • 如果确实需要读取Session数据(不需要写入),可以在类级别添加[SessionState(SessionStateBehavior.ReadOnly)]特性,配合[WebMethod(EnableSession = true)]使用。只读Session会使用共享锁,允许同Session的多个只读请求并行执行。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.25 15:54:58