找不到源-找不到RouteProvider

时间:2020-04-18 11:57:23

标签: asp.net-mvc .net-4.0 asp.net-mvc-routing .net-4.5

我看到一个典型的问题。

从注册自定义路由中,我正在这样调用控制器方法:

 protected override void RegisterCustomRoutes(RouteCollection rots, IProuteProvider rotProvider)
    {
     rotProvider.MapRoute(rots,null, "SignIn",new {Controller = "Layout", Action = "SignIn"});
     ----------
     ----------
    }

在同一项目中,该方法中存在控制器类。

但是,当我试图通过“ F11”进入控制器内部时。在另一个页面/文件“未找到源”中,其显示为错误

  RouteProvider.cs not found.

   You need to find RouteProvider.cs to view the source for the current call stack frame.

我认为,这是由于自定义路线。理想情况下,由于控制器源代码存在于同一解决方案/项目中,因此应该路由至正确的控制器方法。但是,它不会发生吗?

是否可以将其指向控制器方法进行调试? 谢谢。

1 个答案:

答案 0 :(得分:0)

创建一个名为CustomRouteConstraint的类,该类将实现IRouteConstraint接口,就像这样

public class CustomRouteConstraint : IRouteConstraint
{
    public bool Match(HttpContextBase httpContext, Route route, string parameterName, RouteValueDictionary values, RouteDirection routeDirection)
    {
        return true;
    }
}

在RouteConfig中将自定义路由约束注册为

      routes.IgnoreRoute("{resource}.axd/{*pathInfo}");
        var constraintsResolver = new DefaultInlineConstraintResolver();
        constraintsResolver.ConstraintMap.Add("CustomRoute", typeof(CustomRouteConstraint));
        routes.MapMvcAttributeRoutes(constraintsResolver);

现在在您的控制器中将其用作

[Route("MvcTest/other/{name:CustomRoute}")]

public ActionResult OtherPage(string name)

{

    return View();

}