2012-01-21 26 views
6

Esto es probablemente un duplicado para muchos, pero las respuestas obvias en ellos no resuelven mi problema.Se encontraron varios tipos que coinciden con el controlador llamado 'Inicio'. (Dos áreas, el mismo nombre de controlador)

me sale:

Multiple types were found that match the controller named 'Home'. This can happen if the route that services this request ('{controller}/{action}/{id}') does not specify namespaces to search for a controller that matches the request. If this is the case, register this route by calling an overload of the 'MapRoute' method that takes a 'namespaces' parameter. 

The request for 'Home' has found the following matching controllers: 
App.Web.Controllers.HomeController 
App.Web.Areas.Mobile.Controllers.HomeController 

he configurar un espacio de nombres por defecto para mi HomeController en Global.ascx.cs:

routes.MapRoute(
     "Default", // Route name 
     "{controller}/{action}/{id}", // URL with parameters 
     new { controller = "Home", action = "Index", id = UrlParameter.Optional }, // Parameter defaults 
     new string[] { "App.Web.Controllers.HomeController" } 
    ); 

(verificado que no es App.Web.Controllers.HomeController un error).

Y también registrada HomeController del móvil en MobileAreaRegistration:

public override void RegisterArea(AreaRegistrationContext context) { 
    context.MapRoute(
     "Mobile_default", 
     "Mobile/{controller}/{action}/{id}", 
     new { controller = "Home", action = "Index", id = UrlParameter.Optional } 
    ); 
} 

Por lo tanto, ¿por qué es que todavía veo el mensaje de error? Construí/limpié y corrí de nuevo. Aún el mismo resultado.

Así es como me registro mis rutas:

protected void Application_Start() 
{ 
    AreaRegistration.RegisterAllAreas(); 

    RegisterGlobalFilters(GlobalFilters.Filters); 
    RegisterRoutes(RouteTable.Routes); 
} 
+0

¿En qué orden para que registre sus rutas? ¿Tal vez podría mostrar el código de registro completo? – Jan

Respuesta

14

En el registro de rutas Global.asax por razones obvias reemplazar:

new string[] { "App.Web.Controllers.HomeController" } 

con:

new string[] { "App.Web.Controllers" } 

Eso es un espacio de nombres restricción que debe usar allí, no un tipo específico.

+0

¡Esto es todo, gracias! –

Cuestiones relacionadas