我想为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}",
defaults: new { controller = "Api", action = "Index", id = UrlParameter.Optional }
);
但是当添加路线时,我得到一个“ArgumentException
”。异常消息是:
"Ein Pfadsegment, das mehrere Abschnitte enthält, z.B. einen Literalabschnitt oder einen Parameter, darf keinen Catchall-Parameter enthalten. "
翻译:
"A path segment, that has multiple sections, such as a literal section or a parameter, can not have a catchall parameter"
那么我该如何更改我的路线配置?
答案 0 :(得分:8)
您不需要通配符:
routes.MapRoute(
name: "DefaultApiVersioned",
url: "api/v{version}/{controller}/{action}/{id}",
defaults: new { controller = "Api", action = "Index", id = UrlParameter.Optional }
);
通配符只能用作路径定义的最后一段。