7

So che questo errore è apparso per le persone prima, ma questo sembra essere un po 'un caso speciale."Nessun percorso nella tabella di percorso corrisponde ai valori forniti" quando si utilizza Aree

Ho lavorato alla creazione di una SPA con ReactJS su ASP.NET MVC 4. Non ho avuto problemi a far funzionare le cose sulla mia macchina. Tuttavia, il problema strano che sto vedendo è che non funziona su altre macchine per altri sviluppatori. Per quanto ho visto, non ho alcun file che non è controllato sotto il controllo del codice sorgente. Ho fatto uso del RouteDebugger e vedo il percorso corretto catturato.

L'itinerario che sto utilizzando per questa SPA è/V2/Home. Quindi ho un'area chiamata "V2", un controller MVC nell'area chiamata "HomeController" e ha una vista chiamata "Indice". Ho configurato un catchall nella V2AreaRegistration.

public override void RegisterArea(AreaRegistrationContext context) 
{ 
    context.MapRoute(
     "V2_default", 
     "V2/{*url}", 
     new { area = "V2", controller = "Home", action = "Index" } 
    ); 
} 

Ecco Application_Start in Global.asax.cs

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

    GlobalConfiguration.Configure(WebApiConfig.Register);   
    FilterConfig.RegisterGlobalFilters(GlobalFilters.Filters); 
    RouteConfig.RegisterRoutes(RouteTable.Routes); 
    BundleConfig.RegisterBundles(BundleTable.Bundles); 
    AuthConfig.RegisterAuth(); 

    AutoMapperConfiguration.Configure(); 
    Logger.Info("Application started"); 

    GlobalConfiguration.Configuration.EnsureInitialized(); 
} 

ho ottenuto assolutamente nulla con questo. Mi piacerebbe averlo risolto. Sentiti libero di chiedere qualcosa che manca.

+0

Hai un HomeController nel tuo sito principale pure? In tal caso, sarà necessario specificare lo spazio dei nomi da utilizzare qui utilizzando il parametro namespace di MapRoute, altrimenti MVC non saprà quale "HomeController" utilizzare. O quello, o cambia il nome in V2HomeController o qualcosa del genere. –

+0

Esegui un checkout pulito in un'altra cartella sul tuo computer e prova a eseguire il sito, o usa qualcosa come WinMerge per confrontare le directory. –

+0

@TiesonT. L'ho fatto e funziona ancora perfettamente sulla mia macchina – SnareHanger

risposta

2

Non sono sicuro di cosa sia esattamente, ma sono riuscito a risolvere il problema. Ha qualcosa a che fare con il modo in cui gestiamo routing e autenticazione/permessi.

+0

Hai decorato l'indice con l'attributo authorize? O un filtro di autenticazione? –

+1

@DaveAlperovich Filtro di autenticazione. E un altro attributo personalizzato, ma al momento non sono di fronte al codice. – SnareHanger

1

Non riesco a spiegare come funzionerebbe sulla vostra macchina, ma non sulle macchine dei vostri colleghi.

Sembra che la tua registrazione zona non sa cosa spazio dei nomi dei controller vivono in Prova ad aggiungere un quarto argomento per la chiamata MapRoute metodo che dichiara lo spazio dei nomi dei tuoi nuovi controller:.

public override void RegisterArea(AreaRegistrationContext context) 
{ 
    context.MapRoute(
     "V2_default", 
     "V2/{*url}", 
     new { area = "V2", controller = "Home", action = "Index" }, 
     new string[] { "MyApplication.MyMvcProject.Areas.Controllers" } // Change this to the namespace of your area controllers. 
    ); 
} 
+0

Ho lo spazio dei nomi lì dentro. Penso che questo sia tutto capito adesso. Grazie – SnareHanger