Ajax长轮询无法正常工作

问题描述

| 我正在使用MVC 2中的长时间轮询来开发一个简单的陌生人聊天应用程序。如果我使用不同的浏览器打开应用程序,则在我的开发计算机中可以正常工作。 如果我在浏览器的两个选项卡(例如:IE)中应用了该应用程序,则不会从两个选项卡中启动长轮询。我的意思是,有一个开始按钮可以启动聊天,从而触发长轮询。我可以看到它在调试时调用操作。.我的问题是,当我从选项卡一个单击开始按钮时,它会触发ajax请求(长时间轮询(此请求在服务器上等待,直到另一个请求到来))。然后我单击选项卡二中的启动按钮,直到从服务器返回第一个请求(超时后),它才会触发ajax请求。 为什么会这样呢?我读到像浏览器将阻止多个ajax请求..那是原因吗? ..如果我使用不同的浏览器,效果很好。问题只在我在同一浏览器中使用两个标签时出现     

解决方法

  我读到像浏览器将阻止多个ajax请求。 是的,如果使用会话,则ASP.NET会阻止来自同一会话的并发请求。从文档引用:   访问ASP.NET会话状态为   每次会话独占,这意味着   如果两个不同的用户   并发请求,访问每个   授予单独的会话   同时。但是,如果两个   同时请求   同一会话(通过使用相同的会话   SessionID值),第一个请求   获得对该会话的独占访问权限   信息。第二个要求   仅在第一个请求之后执行   完成。 (第二届会议可以   如果独占锁也可以访问   上的信息被释放,因为   第一个请求超出了锁   超时。)如果EnableSessionState   @Page指令中的值已设置   为ReadOnly,对   只读会话信息不   导致对   会话数据。但是,只读   对会话数据的请求可能仍然   必须等待一个设置的锁   对会话数据的读写请求   明确。 另外,请确保已禁用缓存。例如,如果您使用jquery,则在轮询时使用
cache: false
选项:
$.ajax({
    url: \'/poll\',cache: false,success: function(result) {
        // ...
    }
});