Asp.net mvc 4 带有通配符的路由
我想为一个已版本化的API执行路由 文件夹结构如下所示Asp.net mvc 4 带有通配符的路由,asp.net-mvc-4,asp.net-mvc-routing,Asp.net Mvc 4,Asp.net Mvc Routing,我想为一个已版本化的API执行路由 文件夹结构如下所示 /api/v1-0/ApiController.cs /api/v1-1/ApiController.cs /api/v1-2/ApiController.cs 所以我加上了路线 routes.MapRoute( name: "DefaultApiVersioned", url: "api/v{*Version}/{controller}/{action}/{id}", defaul
/api/v1-0/ApiController.cs
/api/v1-1/ApiController.cs
/api/v1-2/ApiController.cs
所以我加上了路线
routes.MapRoute(
name: "DefaultApiVersioned",
url: "api/v{*Version}/{controller}/{action}/{id}",
defaults: new { controller = "Api", action = "Index", id = UrlParameter.Optional }
);
但是当添加路由时,我会得到一个“ArgumentException
”。例外消息是:
“在Pfadsegment中,作为一个完整的参数,z.B.是一个完整的参数,是一个完整的参数。”
翻译:
“具有多个节(如文字节或参数)的路径段不能具有catchall参数”
那么,如何更改路由配置?您不需要通配符:
routes.MapRoute(
name: "DefaultApiVersioned",
url: "api/v{version}/{controller}/{action}/{id}",
defaults: new { controller = "Api", action = "Index", id = UrlParameter.Optional }
);
通配符只能用作管线定义的最后一段。您不需要通配符:
routes.MapRoute(
name: "DefaultApiVersioned",
url: "api/v{version}/{controller}/{action}/{id}",
defaults: new { controller = "Api", action = "Index", id = UrlParameter.Optional }
);
通配符只能用作管线定义的最后一段