问题是这样的
1.打开网站项目,重新生成,ok,打开网页,网页马上向后台发送一个ajax长轮询。
2.vs后台的TestController(继承自AsyncController)下的public Task GetData 方法处理这个ajax请求,有结果就返回结果,没有结果的就1分钟后返回结果。
问题就出现在这里,我如果在同一个浏览器下,访问同一个域名网页,就会阻塞,直至我的ajax异步返回结果的一瞬间,才能响应其他请求。而ajax再次发送请求的时候,继续阻塞。
这时我想到是不是我后台写错了,AsyncController没起作用,但是最诡异的事情发生了:假如我这时候重新生成解决方案后,不但不再阻塞我其他的网页请求,而且我的旧页面(重新生成项目后并没有刷新页面)的轮询还能正常继续。
好了,说了这么多,答案是不是我重新生成项目的时候,因为Session也被同时清除了,所以就能既能轮询,也能响应其他请求了。如果真的这样的话,我的异步controller还有意义吗?除了清除Session,还有其他办法不阻塞浏览器的会话吗?