2010-03-17 49 views
10

我只是想知道,每个请求是否有一个新的控制器实例?这实际上是如何工作的?在传入的请求路由选择正确的控制器后,我读了类似的东西..我想它创建了一个新的实例,然后控制器进一步处理请求。如果是这样,那么行动转向其他行动呢?这是否也会启动新的路由过程和控制器的新实例?是否有每个请求的新控制器实例?

在此先感谢。

回答

15

是的,为每个请求实例化一个新实例,并在请求结束时销毁。

每个路由由MvcRouteHandler的一个实例处理。默认处理程序调用ControllerFactory,根据url标记,通过对Activator.CreateInstance()的反射调用实例化新的控制器。

+0

事实上,从MVC 2开始,框架将尝试检测您是否错误地将DI容器设置为返回带有非瞬态寿命的控制器。如果是这样,它会抛出一个异常,要求您重新配置您的DI容器。 – Levi

相关问题