【发布时间】:2018-08-31 02:57:28
【问题描述】:
var constraintResolver = new DefaultInlineConstraintResolver()
{
ConstraintMap =
{
["apiVersion"] = typeof( ApiVersionRouteConstraint )
}
};
config.MapHttpAttributeRoutes(constraintResolver);
config.AddApiVersioning(o => o.AssumeDefaultVersionWhenUnspecified = true);
[ApiVersion("2.05")]
[RoutePrefix("api/v{version:apiVersion}/ger")]
public class caGerController
[Route("~/api/ger/getDetail")]
[Route("getDetail")]
GetGerData
[ApiVersion("1")]
[RoutePrefix("api/v{version:apiVersion}/gerDetail")]
public class caGerDetailsController
caGerController
[Route("~/api/gerDetail/getDetail")]
[Route("getDetail")]
GetGerData
>> GetGerData
结果:
-
这两个 URL 都适用于 v1 版本的 ROUTE。
-
第二个 URL 同时适用于 v1 和没有 v1 路由的直接 URL,即 [Route("~/api/gerDetail/getDetail")]
-
问题:第一个 URL 仅适用于 v1,它不适用于像“[Route("~/api/ger/getDetail")]”这样的直接路由 并得到如下错误:
“错误”:{ "代码": "ApiVersionUnspecified", “消息”:“需要 API 版本,但未指定。” }
如何解决这个问题? 当我从 2.05 更改为 1.0 时,它可以工作,但 2.0 或 2.05 都不起作用。是否需要单独的文件夹?
【问题讨论】:
标签: asp.net-web-api routes asp.net-web-api-routing api-versioning