过去我使用过一些我认为是微软的 Scott Hanselman 的代码。但是现在我正在使用 MVC5,我认为该代码不再有效。
有没有一种方法可以跟踪 MVC5 中采用的路由,以便我知道为什么我会看到如下消息:
HTTP Error 404.0 - Not Found
The resource you are looking for has been removed, had its name changed, or is temporarily unavailable.
过去我使用过一些我认为是微软的 Scott Hanselman 的代码。但是现在我正在使用 MVC5,我认为该代码不再有效。
有没有一种方法可以跟踪 MVC5 中采用的路由,以便我知道为什么我会看到如下消息:
HTTP Error 404.0 - Not Found
The resource you are looking for has been removed, had its name changed, or is temporarily unavailable.
我知道对于 OP 来说已经很晚了,但是对于其他试图调试 404 错误的人来说,我已经找到了一种拦截路由结果并查看它为什么找不到资源的方法。
在Global.asax.cs
像这样覆盖初始化:
public override void Init()
{
base.Init();
this.AcquireRequestState += showRouteValues;
}
protected void showRouteValues(object sender, EventArgs e)
{
var context = HttpContext.Current;
if (context == null)
return;
var routeData = RouteTable.Routes.GetRouteData(new HttpContextWrapper(context));
}
该routeData
变量将保存正在解释的路线信息。我已经在 MVC5 上对此进行了测试。
我最初在 Paul Evans 的另一个回答中遇到了这种方法,这是链接(感谢@porcus 找到它):stackoverflow.com/a/25466524
看看一瞥。它附带的模块之一是 Routes 模块,它允许您查看有关已检查路由的详细信息、传入的值以及匹配的值(如果有)。