Estoy obteniendo lo anterior cuando intento abrir una vista en un controlador en un Área. Ninject está configurado como sigue:IControllerFactory 'MyWebSite.WebUI.Infrastructure.NinjectControllerFactory' no devolvió un controlador para el nombre 'Admin'
public class NinjectControllerFactory : DefaultControllerFactory
{
private IKernel kernel = new StandardKernel(new RLSBCWebSiteServices());
protected override IController GetControllerInstance(RequestContext context, Type controllerType)
{
if (controllerType == null)
return null;
return (IController)kernel.Get(controllerType);
}
private class MyWebSiteServices : NinjectModule
{
public override void Load()
{
Bind<IMatchesRepository>().To<SqlMatchesRepository>().WithConstructorArgument("connectionString",
ConfigurationManager.ConnectionStrings["MyWebSiteDb"].ConnectionString);
}
}
}
Si coloco un punto de interrupción en el código, I ver el contexto RequestContext contiene los siguientes valores:
context.RouteData.DataTokens.Values[0] = “MyWebSite.WebUI.Areas.Visitor” context.RouteData.DataTokens.Values[1] = “Visitor” which is the Area
context.RouteData.Values.Values[0] = “admin” which is the Controller
context.RouteData.Values.Values[1] = “register” which is the View
Sin embargo controllerType == null, en lugar en el controlador nombre.
Esta transferencia a la nueva página se active mediante
Html.ActionLink("here", "Register", "Admin", new { area = "Visitor" }, null)
que se encuentra en la página de inicio de sesión. Sin embargo lo mismo sucede si entro
http://example.com/Visitor/admin/register
en IE8
El registro área es como sigue:
public class VisitorAreaRegistration : AreaRegistration
{
public override string AreaName { get { return "Visitor"; } }
public override void RegisterArea(AreaRegistrationContext context)
{
context.MapRoute(
"Visitor_default",
"Visitor/{controller}/{action}/{id}",
new { controller = "Admin", action = "Register", id = UrlParameter.Optional }
);
}
}
nadie ha conseguido que las áreas de trabajo con NinjectControllerFactory, o hay algo mal con mi configuración?
Lo miré cuando descargué Ninject en primer lugar, pero pensé que el .dll que utilicé era la versión compilada de esto. Entonces, ahora descargué esta versión pero los documentos son muy escasos. ¿Hay algo que sugieras que me ayude a configurar las cosas? – xiecs
Eche un vistazo a la aplicación de muestra. Eso viene con el código fuente –
He descargado la fuente, la he instalado y he mostrado con éxito el sitio web de Ninject. Al mirar a través de la fuente, es mucho más complicado de lo que quiero, con Spark, Elmah, Newtonsoft, etc. Mucho de eso está por encima de mí. Noté que no usa Áreas en su sitio web. También eché un vistazo a JavascriptRouteGenerator.cs. Parece que no hay nada allí que sugiera que maneja áreas. Realicé algunos cambios en función del código fuente, que son demasiado grandes para enumerarlos aquí. Todavía recibo un mensaje de error que dice que no puede encontrar la URL solicitada. – xiecs