2010-03-17 9 views
10

Me pregunto, ¿hay una nueva instancia de controlador para cada solicitud? ¿Cómo funciona esto realmente? Leí algo así después de que un enrutamiento de solicitud entrante selecciona el controlador correcto ... y supongo que crea una nueva instancia de eso y luego el controlador maneja la solicitud aún más. Si eso es así, ¿qué ocurre con las acciones que redirigen a otras acciones? ¿Eso inicia un nuevo proceso de enrutamiento y una nueva instancia de controlador también?¿Hay una nueva instancia de controlador para cada solicitud?

Gracias de antemano.

Respuesta

15

Sí, una nueva instancia en instancia para cada solicitud y destruida al final de la solicitud.

Cada ruta es manejada por una instancia de un MvcRouteHandler. El controlador predeterminado llama a ControllerFactory, que, en función de los tokens de url, instancia un nuevo controlador a través de una llamada de reflexión a Activator.CreateInstance().

+0

De hecho, a partir de MVC 2, la infraestructura intentará detectar si ha configurado incorrectamente su contenedor DI para devolver controladores con tiempos de vida no transitorios. Si es así, lanzará una excepción pidiéndole que reconfigure su contenedor DI. – Levi

Cuestiones relacionadas