我有一个本地URL列表,我需要确定它们是否是“有效的MVC路径”。如何检查URL(路径)是否映射到MVC控制器?
Phil Haack's Route Debugger将找到与当前请求匹配的路由,并使用当前的HttpContext执行此操作。我希望得到这些信息,而不是建立一个模拟HttpContext - 如果可能的话。
答案 0 :(得分:16)
您可以使用模拟的HttpContextBase调用RouteTable.Routes.GetRouteData
。
使用请求AppRelativeCurrentExecutionFilePath
在内部匹配路由
但是,此功能未公开,因此您需要传递HttpContextBase
。
您需要创建一个HttpContextBase
类,在其请求属性中返回HttpRequestBase
个实例
HttpRequestBase
类需要在~/
属性中以AppRelativeCurrentExecutionFilePath
开头返回您的路径。
您不需要实现任何其他属性,除非它们被IRouteConstraint
使用。
要检查是否有MVC路由,请检查生成的routeData.Handler is MvcRouteHandler
。