2012-01-21 13 views
6

Questo è probabilmente un duplicato per molti, ma le risposte ovvie non risolvono il mio problema.Sono stati trovati più tipi che corrispondono al controller denominato "Home". (Due aree, stesso nome del controller)

ottengo:

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 

Ho installato uno spazio dei nomi di default per il mio HomeController in 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" } 
    ); 

(verificato che non è App.Web.Controllers.HomeController un errore di battitura).

E anche registrato HomeController del Mobile di MobileAreaRegistration:

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

Pertanto, perché è che continuo a vedere il messaggio di errore? Ho costruito/pulito ed eseguito di nuovo. Ancora lo stesso risultato.

Questo è come mi iscrivo miei percorsi:

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

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

In quale ordine si registrano i percorsi? Forse potresti mostrare il codice di registrazione completo? – Jan

risposta

14

Nella tua registrazione Global.asax percorso per ovvie ragioni sostituire:

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

con:

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

Questo è uno spazio dei nomi vincolo che dovresti usare lì, non un tipo specifico.

+0

Questo è tutto, grazie! –

Problemi correlati