Asp.net mvc 只有一个斜杠时,路由*路径通配符将不接受路径

Asp.net mvc 只有一个斜杠时,路由*路径通配符将不接受路径,asp.net-mvc,routing,url-routing,Asp.net Mvc,Routing,Url Routing,我有一个通配符路线的问题,我想知道是否有人可以帮助,我有一个路线如下 routes.MapRoute( "ReportRoute", "Report/{*path}", new { controller = "Home", action = "Index"}) .RouteHandler = new ReportPathRouteHandler(); 当routehandler将路径拆分为正确的

我有一个通配符路线的问题,我想知道是否有人可以帮助,我有一个路线如下

routes.MapRoute(
            "ReportRoute", 
            "Report/{*path}", 
            new { controller = "Home", action = "Index"})
            .RouteHandler = new ReportPathRouteHandler();
当routehandler将路径拆分为正确的部分以获得正确的报告时,这非常有效,如果我放入一条路径www.mysite.com/report/folder1/folder2/report,那么我将得到我想要的东西,但是我的问题是如果我有一个类似www.mysite.com/report/folder1/report的链接,*路径仅为folder1/report,路由确实不喜欢这样,事实上它甚至没有击中我的路由处理程序,只是直接转到“资源找不到”服务器错误页面。我试图通过在通配符之前添加一个新路由来解决这个问题,如下所示

routes.MapRoute(
            "ReportRoute2",
            "Report/{path}/{name}",
            new { controller = "Home", action = "Index" });

当控制器将路径和名称作为两个字符串参数,但仍然没有乐趣时,是否有人对如何解决此问题有任何想法或建议?感谢您的帮助。

第一个示例应该很好(除了结尾的奇
.RouteHandler=new ReportPathRouteHandler();
)。你的控制器动作是什么样子的?它是否采用“字符串路径”作为参数?

The.routehandler是一个类,它采用路径并切入控制器操作的参数,也许我应该放弃这一点,只需将完整*路径传递给控制器,使用routehandler似乎更简洁,但如果不使用routehandler进行尝试,会发生什么情况呢。这听起来确实很有用(我会去看看),但当出现问题时,我总是尽量保持简单,然后慢慢增加复杂性。我已经被拖到另一个项目中,所以我会测试一下,稍后再给你回复