Hace poco intenté implementar la inyección de dependencia utilizando StructureMap. Logré seguir el ejemplo hasta el final, pero me encuentro con una excepción lanzada cada vez que intento ejecutar la aplicación. Aquí hay algunos fragmentos de código de la fábrica de mi controlador.Controlador personalizado Fábrica, problemas de Inyección de Dependencia/Structuremap con ASP.NET MVC
public class StructureMapControllerFactory : DefaultControllerFactory
{
protected override IController GetControllerInstance(Type controllerType)
{
if (controllerType == null)
throw new ArgumentNullException("controllerType");
return ObjectFactory.GetInstance(controllerType) as Controller;
}
}
Mi Global.asax llama a un programa previo de clase estática que registra todas mis dependencias pero parece que GetControllerInstance del StructureMapControllerFactory se está llamado dos veces. La primera vez que se invoca, se pasa un tipo de controlador apropiado pero siempre es nulo en la segunda llamada.
La primera vez que se llama a GetControllerInstance, el tipo se establece en HomeController que es correcto. El código se activa en HomeController y devuelve View(). A la vuelta de la Vista(), se llama al evento Page_Load en el archivo aspx. Después de pasar por eso, llega a una línea:
httpHandler.ProcessRequest (HttpContext.Current);
Ahí es donde se llama a GetControllerInstance por segunda vez.
Aquí está mi bits de Global.asax que pueden ser relevantes:
protected void Application_Start()
{
RegisterRoutes(RouteTable.Routes);
Bootstrapper.ConfigureStructureMap();
ControllerBuilder.Current.SetControllerFactory(new StructureMapControllerFactory());
}
Estoy muy interesado en obtener la inyección de dependencias de trabajo y estaría muy agradecido si alguien me puede ayudar a cabo. :)
Dude, estoy teniendo el EXACTO mismo problema. – Micah
¿Cómo registras tus controladores? – Sebastian
Buena descripción del problema. –