Tengo entendido que no se llama al constructor de un controlador durante cada solicitud web. Suponiendo que esto sea cierto, ¿cuál es el ciclo de vida de un controlador? ¿Se "construye" al inicio de la aplicación, luego se almacena en caché y se invoca con el texto de solicitud inyectado en cada solicitud web?Ciclo de vida del controlador ASP.NET MVC
Para que quede claro, no estoy preguntando cómo emular el comportamiento del constructor, utilizo el evento OnActionExecuting para iniciar cosas que normalmente haría en un constructor. Además, uso constructores en controladores para pruebas de unidades y sistemas.
Gracias!
¿Por qué? ¿Por qué? –
Me equivoqué y me enseñé por qué esto es y debería ser el caso. Estaba creando controladores con acciones de lectura/escritura y vistas usando EF. El código generado creó una variable de instancia privada para la instancia de contexto de EF. Pensé que sería inteligente y convertiría eso en una variable estática. El problema es que si algo fuera del alcance de este controlador modifica la base de datos, el contexto estático nunca lo sabe. Ahora lo dejo como una variable de instancia y dado que se crea una nueva instancia con cada solicitud, el contexto puede ver cualquier cambio en la base de datos. – ThatAintWorking
En una API web donde todo el estado está contenido dentro de los parámetros (es decir, un estilo funcional) no hay ninguna razón (que yo pueda ver) por qué un controlador no puede reutilizarse. Es thread-safe por diseño. –