2009-05-25 7 views
11

mi sembra di correre in questo errore per tutto il tempo:Come si esegue il debug "Nessun percorso nella tabella di percorso corrisponde ai valori forniti." in ASP.NET MVC

Nessun percorso nella tabella di route partite i valori forniti.

Si è verificata un'eccezione non gestita durante l'esecuzione della richiesta Web corrente. Si prega di rivedere la traccia dello stack per ulteriori informazioni sull'errore e sulla sua origine nel codice.

Lo stack trace è solo un mucchio di immondizia MVC.

Ovviamente sto interrogando per un percorso inesistente, ma come faccio a scoprire quale percorso stava effettivamente cercando di interrogare? Mi piacerebbe conoscere l'URL e il metodo HTTP effettivi. Come posso scoprirlo?

(io sono abituato a Django in cui il tentativo di URL è una parte l'eccezione e preferirebbero un metodo più efficiente di visualizzazione del sorgente della mia pagina e capire che fuori.)

risposta

8

È possibile utilizzare la classe di utilità RouteDebugger di MvcContrib per ottenere una vista migliore su quale route è stata gestita la richiesta.

Tutto quello che dovete fare è aggiungere un riferimento alla MvcContrib, e aggiungere questo codice alla Global.asax

RegisterRoutes(RouteTable.Routes); 
RouteDebugger.RewriteRoutesForTesting(RouteTable.Routes); 
+0

Ho trovato questo articolo di Phil Haack un po 'più concreto. http://haacked.com/archive/2008/03/13/url-routing-debugger.aspx –

+2

Ho anche trovato il problema del bug di routing "Two Consecutive Optional Parameter" in MVC 3. Il RouteDebugger avrebbe trovato correttamente la rotta tuttavia quando si esegue l'applicazione il problema sarebbe ancora lì. Vedere l'articolo: http://haacked.com/archive/2011/02/20/routing-regression-with-two-consecutive-optional-url-parameters.aspx per la risoluzione. –

+0

@DaTribe Golly-gee. Questo era esattamente il mio problema. Grazie per il collegamento a questo. –

13
+2

Stephen Walther parla anche di percorso Debug nel capitolo 9 del suo libro di prossima pubblicazione - attualmente disponibili qui: http://stephenwalther.com/ blog/archivio/2009/02/06/chapter-2-understanding-routing.aspx –

+0

Per fare in modo che funzioni: 1) riferimento RouteDebug.dll 2) Aggiungere questo alla fine del metodo Application_Start: RouteDebug.RouteDebugger.RewriteRoutesForTesting (RouteTable.Routes); 3) Rallegrati –

3

È possibile utilizzare tornare Redirect ("/ home/index") al posto di

return RedirectToAction("Home","index"); 

O

la soluzione per me è stato quello di passare in a rea all'interno del percorso i valori dei parametri che cambia:

return RedirectToAction("ActionName", "ControllerName"); 

a:

return RedirectToAction("ActionName", "ControllerName", new { area = "AreaName" }) 
+0

La situazione per me era quasi la stessa, ho dovuto aggiungere il seguente come terzo parametro: 'new {area = string.Empty})' –

Problemi correlati