2009-05-25 8 views
11

Me parece funcionar en este error todo el tiempo:Cómo depurar "Ninguna ruta en la tabla de rutas coincide con los valores suministrados". en ASP.NET MVC

No hay ruta en la tabla de rutas coincide con los valores suministrados.

Ocurrió una excepción no controlada durante la ejecución de la solicitud web actual. Revise el seguimiento de la pila para obtener más información sobre el error y dónde se originó en el código.

La pila de seguimiento es solo un montón de basura MVC.

Obviamente estoy preguntando por una ruta inexistente, pero ¿cómo puedo descubrir qué ruta estaba intentando realmente consultar? Me encantaría saber la URL real y el método HTTP. ¿Cómo puedo descubrir esto?

(estoy acostumbrado a Django donde el intento de URL es una parte de la excepción y preferirían un método más eficiente que la visualización de la fuente de mi página y averiguarlo.)

Respuesta

8

Puede usar la clase de utilidad MvcContribRouteDebugger para obtener una mejor vista de qué ruta se manejó la solicitud.

Todo lo que necesita hacer es añadir una referencia a la MvcContrib, y añadir este código a la Global.asax

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

Encontré este artículo de Phil Haack un poco más al grano. http://haacked.com/archive/2008/03/13/url-routing-debugger.aspx –

+2

También encontré el problema del error de enrutamiento "Two Consecutive Optional Parameter" en MVC 3. El RouteDebugger encontraría correctamente la ruta sin embargo, al ejecutar la aplicación, el problema seguiría allí. Ver artículo: http://haacked.com/archive/2011/02/20/routing-regression-with-two-consecutive-optional-url-parameters.aspx para su resolución. –

+0

@DaTribe Golly-gee. Ese fue mi problema exactamente. Gracias por enlazar a eso. –

13
+2

Stephen Walther también habla de la Ruta de depuración en el capítulo 9 de su próximo libro - Actualmente disponible aquí: http://stephenwalther.com/ blog/archive/2009/02/06/chapter-2-understanding-routing.aspx –

+0

Para hacer que esto funcione: 1) referencia RouteDebug.dll 2) Agregue esto al final de su método Application_Start: RouteDebug.RouteDebugger.RewriteRoutesForTesting (RouteTable.Routes); 3) Rejoice –

3

Puede utilizar regresar de redirección ("/ home/index") en lugar de

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

O

la solución para mí iba a pasar en la a rea dentro de la ruta valores de los parámetros de cambio:

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

a:

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

La situación para mí era casi la misma, tuve que agregar lo siguiente como el tercer parámetro: 'new {area = string.Empty})' –

Cuestiones relacionadas