首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 网站开发 > asp.net >

[MVC] 在action中执行Thread.Sleep能导致后续请求阻塞

2014-01-22 
[MVC] 在action中执行Thread.Sleep会导致后续请求阻塞假设我有一个如下的Action,用浏览器访问一次以后,输

[MVC] 在action中执行Thread.Sleep会导致后续请求阻塞
假设我有一个如下的Action,用浏览器访问一次以后,输出ok然后挂起10秒,但是如果同时再访问一次,就必须等之前的请求处理完毕以后才会进入Action,也就是第二次访问要等10秒后才会输出ok,这是怎么回事?
但是如果开另外一个浏览器就不会有这样的问题


public class TestController : Controller 
    {
        public void Index()
        {
            Console.WriteLine("ok");
            Thread.Sleep(10000); 
        }
    }

[解决办法]
引用:
对了另外还有一个很重要的情况,那就是如果我开另外一个浏览器去访问就不会被阻塞,比如一开始我用chrome然后再用firefox就没问题!我查过有说是session被加锁的缘故,但是我禁止掉session后还是不行

这个很明显的,同一个会话会被阻塞的,不同会话不会。
同一款浏览器会保持会话的,开另一款浏览器就是一个新的会话了,所以不会阻塞。

热点排行