IIS 7.5,.Net 4.6
在浏览器网络诊断选项卡中,我可以看到请求是堆叠而不是并发执行。 这可以通过静态内容请求(例如,样式表,图像,javascript)看出,这些请求等待动态请求在完成之前完成。 我还设计了一个测试,其中使用javascript计时器定期对静态内容进行请求。 (我们称之为“http-ping”。如果我有一个长时间运行的主要请求,这些http-ping请求会备份。
使用perfmon,我已确定以下计数器在我的http-ping请求堆叠时递增: 请求当前; 管道实例计数;
虽然这些计数器保持为零: 本机队列中的请求; 请求排队; 应用程序队列中的请求;
我还通过调试检查了app状态。对应于主请求的只有一个线程在应用程序代码中处于活动状态。其他线程将堆栈位置显示为“”。
答案 0 :(得分:0)
根据@usr的建议,会话就是问题所在。实际上,会话状态的使用根据this msdn article禁止同一会话上的并发动作。就我而言,我或许可以使用
[SessionState(System.Web.SessionState.SessionStateBehavior.ReadOnly)]
缓解问题。