HTTP请求没有命中控制器

时间:2014-03-26 22:28:52

标签: ajax asp.net-mvc http

我目前遇到一个问题,我向.NET控制器发送异步ajax请求以启动数据库搜索。此请求通过服务器启动搜索并立即(不到一秒钟)回复带有搜索ID的回调,此时我开始每隔10秒发送一次Ajax请求以检查搜索是否已完成。此方法运行正常,并已成功通过多个用户同时发送请求进行测试。

如果我在第一次搜索完成之前从同一用户发送第二个搜索请求,则此调用将不会进入控制器端点,直到第一次搜索完成后,这可能需要一分钟。我可以看到请求在开发工具中留下chrome(或FF / IE),并使用Fiddler作为代理我可以看到请求命中运行应用程序的机器,但是它不会在第一行遇到断点直到第一次调用返回后的端点。

此调用阻止时,浏览器通常最多有3个待处理请求。 IIS或.NET体系结构是否有某种机制将我的请求排队?或者如果没有,请求离开代理和进入控制器之间还有什么?我对如何调试它感到有点失落。

1 个答案:

答案 0 :(得分:0)

我能够找到问题。事实证明,尽管我的端点是异步定义的,但ASP.NET控制器默认按会话同步。因此,虽然我的端点能够跨会话同时执行,但在同一会话中,它一次只允许一个呼叫。我能够通过将控制器SessionState属性设置为只读来解决问题,允许我的调用无阻塞地通过。

[SessionState(System.Web.SessionState.SessionStateBehavior.ReadOnly)]