【问题标题】:HTTP request not hitting controllerHTTP 请求未命中控制器
【发布时间】:2014-03-26 22:28:52
【问题描述】:

我目前遇到一个问题,我向 .NET 控制器发送异步 ajax 请求以启动数据库搜索。该请求发送到服务器,该服务器启动搜索并立即(不到一秒)使用搜索 ID 回复回调,此时我开始每 10 秒发送一次 ajax 请求以检查搜索是否已完成。此方法运行良好,并且已在多个用户同时发送请求的情况下成功测试。

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

在此调用被阻塞时,通常有多达 3 个来自浏览器的待处理请求。 IIS 或 .NET 体系结构是否有某种机制让我的请求排队?或者如果不是,在离开代理和进入控制器的请求之间还有什么?我不知道如何调试它。

【问题讨论】:

    标签: ajax asp.net-mvc http


    【解决方案1】:

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2019-09-05
      • 2021-02-11
      • 2018-02-16
      • 2013-09-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多