ASP.NET MVC控制器的生命周期是多少?

时间:2010-03-01 10:32:52

标签: asp.net-mvc

我正在开发我的MVC应用程序,我在想,控制器类的生命周期是什么?

什么时候创建?有多少单个控制器的实例?局部变量的含义是什么?什么时候被摧毁?

我确信互联网上有一个很好的链接,但我的google-fu找不到它。

2 个答案:

答案 0 :(得分:46)

Stephen Walther对MVC框架处理的请求的生命周期有一个很好的article

这是他文章顶部的摘录,它继续详细解释每一步:

  

生命周期步骤概述

     

从ASP.NET MVC网站发出请求时,有五个主要步骤:

     

<强> 1。 RouteTable已创建

     

第一步只在ASP.NET应用程序首次启动时发生一次。 RouteTable将URL映射到处理程序。

     

<强> 2。 UrlRoutingModule拦截请求

     

每当您提出请求时,都会发生第二步。 UrlRoutingModule拦截每个请求,并创建并执行正确的处理程序。

     

第3。 MvcHandler执行

     

MvcHandler创建一个控制器,向控制器传递一个ControllerContext,然后执行控制器。

     

<强> 4。 Controller执行

     

控制器确定要执行的控制器方法,构建参数列表并执行该方法。

     

<强> 5。 RenderView方法被称为

     

通常,控制器方法调用RenderView()将内容呈现给浏览器。 Controller.RenderView()方法将其工作委托给特定的ViewEngine

答案 1 :(得分:19)

假设您没有更改默认ControllerFactory,将为每个请求创建控制器,并在请求完成后“垃圾收集”。

简而言之,您不必担心实例变量的竞争条件(尽管您明确地使用静态变量)。话虽如此,为了更清晰的代码,我建议保持控制器操作的可重入性。