asp.net mvc中的静态方法

Static methods in asp.net mvc

使用ASP.NET MVC 4,

我用这样的静态方法创建了一个类

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
public  class StaticClass
{
    public static int val { get; set; }

    public static string ReturnValueBasedOnInput(int n)
    {
        string res;
        switch (n)
        {
            case 101:
                Thread.Sleep(30000);
                res ="Long lasting response: 101" + val;
                break;
            default:
                res = n.ToString() +" was provided..." + val;
                break;              
        }

        return res;
    }        
}

从我的控制器调用:

1
2
3
4
5
    public ActionResult Index(int id = 1)
    {            
        ViewBag.returnValue = StaticClass.ReturnValueBasedOnInput(id);
        return View(id);
    }

我期望当我调用参数值为101的方法时,应用程序应该被阻塞30秒,但它仍然保持响应。我认为,因为这是一个静态方法,所以应该为所有传入的方法调用阻塞30秒。有人能解释一下这里发生了什么吗?


使用控制器的id=101处理对Index操作的请求的线程应该被阻塞。处理其他会话的其他请求的线程将不会被阻止。根据对应控制器[SessionState(System.Web.SessionState.SessionStateBehavior.ReadOnly)]ReadOnlysession属性,即使是对同一会话的其他请求也可能不会被阻止。