如何解决“全部参数只能显示为路由模板的最后一段。”

时间:2019-02-15 23:00:06

标签: asp.net-core asp.net-core-mvc asp.net-core-routing

如果我有一个带有操作方法的控制器,该控制器使用基于属性的路由并像这样声明它,那么一切都很好:

    [HttpGet]
    [Route("/dev/info/{*somevalue}")]
    public IActionResult Get(string somevalue) {

        return View();
    }

例如,可以通过指定以/dev/info/hello-world/dev/info/new-world结尾的网址来路由到上述操作方法

但是,我的业务需求是拥有一个看起来像这样的网址:/dev/hello-world/info/dev/new-world/info,并且有无穷无尽的此类网址集,它们都需要路由到控制器上的相同操作方法

我想按照以下操作方法来设置基于属性的路由:

    [HttpGet]
    [Route("/dev/{*somevalue}/info/")]
    public IActionResult Get(string somevalue) {

        return View();
    }

但是当我这样做时,在Web项目运行时我会收到以下错误:

  

处理请求时发生未处理的异常。   RouteCreationException:属性路由信息发生以下错误:

     

操作:“ App.SomeController.Get(1-wwwSomeProject)”   错误:包罗万象的参数只能显示为路由模板的最后一段。   参数名称:routeTemplate   Microsoft.AspNetCore.Mvc.Internal.AttributeRoute.GetRouteInfos(IReadOnlyList操作)

必须采用某种方法来解决此错误。知道办法吗?

0 个答案:

没有答案