ASP.NET 请求处理 四 (Controller基本特性)

public class TestController : Controller
    {
        [ThreadStatic]
        static ThreadInfo obj;

        [HttpGet]
        public string Index()
        {
            return "123456";
        }

        [HttpGet]
        public string bbb()
        {
            bool bnew = obj == null;
            if (bnew)
            {
                obj = new ThreadInfo();
                obj.id = Thread.CurrentThread.ManagedThreadId.ToString();
                obj.name = "controller hash="+this.GetHashCode();
            }
            return bnew+"______class info{ hash:"+this.GetHashCode().ToString()
                +",thread id:"+Thread.CurrentThread.ManagedThreadId.ToString()
                +",_________"+obj.ToString();
        }
    }

    class ThreadInfo
    {
        public String id;
        public String name;
        public override string ToString()
        {
            return "threadinfo{id:"+id+",name:"+name+",thread obj hash:"+GetHashCode().ToString();
        }
    }
    //True______class info{ hash:26130175,thread id:67,_________threadinfo{id:67,name:controller hash=26130175,thread obj hash:19998225
    //False______class info{ hash:23697479,thread id:67,_________threadinfo{id:67,name:controller hash=26130175,thread obj hash:19998225
    //True______class info{ hash:55575390,thread id:74,_________threadinfo{id:74,name:controller hash=55575390,thread obj hash:18085517
    //False______class info{ hash:7922750,thread id:74,_________threadinfo{id:74,name:controller hash=55575390,thread obj hash:18085517
    //False______class info{ hash:26960933,thread id:67,_________threadinfo{id:67,name:controller hash=26130175,thread obj hash:19998225
    //False______class info{ hash:64947243,thread id:67,_________threadinfo{id:67,name:controller hash=26130175,thread obj hash:19998225

1.默认每次请求都会生成一个controller实例 (这个和java-spring里面默认的controller模式有区别)

2.请求会从线程池中取线程来处理

posted @ 2020-12-01 12:31  dint  阅读(248)  评论(0编辑  收藏  举报