在开始之前,声明一下,由于ASP.NET MVC5正式发布了,后面的分析将基于ASP.NET MVC5最新的源代码。
在前面的内容我们分析了怎样根据路由信息来确定Controller的类型,并最终生成Controller的实例。这一节来了解一下Controller的总体执行分析,以同步执行版本为主。
Controller的继承体系如下图所示:
当调用Controller实例的Excecute方法时,实际是调用ControllerBase的Excecute方法,该方法的主要实现代码如下:
1 protected virtual void Execute(RequestContext requestContext) 2 { 3 4 VerifyExecuteCalledOnce(); 5 Initialize(requestContext); 6 using (ScopeStorage.CreateTransientScope()) 7 { 8 ExecuteCore(); 9 } 10 }