如何调试"路由表中的路由与提供的值不匹配".在ASP.NET MVC中

Fra*_*ger 11 asp.net-mvc

我似乎总是遇到这个错误:

路由表中的路由与提供的值不匹配.

在执行当前Web请求期间发生了未处理的异常.请查看堆栈跟踪以获取有关错误及其源自代码的位置的更多信息.

堆栈跟踪只是一堆MVC垃圾.

显然我正在查询不存在的路由,但是如何找到它实际尝试查询的路由?我很想知道实际的URL和HTTP方法.我该怎么发现这个?

(我已经习惯了Django,其中尝试过的URL是异常的一部分,并且更喜欢比查看我的页面源并找出它更有效的方法.)

Dar*_*rov 13

有一个很好的路由调试器.

  • Stephen Walther还在他即将出版的书的第9章中讨论了路由调试 - 现在可以在这里找到:http://stephenwalther.com/blog/archive/2009/02/06/chapter-2-understanding-routing.aspx (2认同)

Fit*_*aki 8

您可以使用MvcContribRouteDebugger实用程序类来更好地查看处理请求的路由.

您需要做的就是添加对MvcContrib的引用,并将此代码添加到 Global.asax

RegisterRoutes(RouteTable.Routes);
RouteDebugger.RewriteRoutesForTesting(RouteTable.Routes);
Run Code Online (Sandbox Code Playgroud)

  • 我还遇到了MVC 3中"两个连续可选参数"路由错误的问题.RailDebugger会正确地找到路由但是在运行应用程序时问题仍然存在.请参阅文章:http://haacked.com/archive/2011/02/20/routing-regression-with-two-consecutive-optional-url-parameters.aspx进行解决. (2认同)