小编Ath*_*i S的帖子

AssumeDefaultVersionWhenUnspecified 未按预期工作

我一直在为我的 WebAPI 使用 asp net core 版本控制组件。需要您帮助了解 AssumeDefaultVersionWhenUnspecified 是如何工作的。(尝试搜索文档,但找不到)

我的启动看起来像下面

services.AddApiVersioning(o => {
            o.ReportApiVersions = true;
            o.AssumeDefaultVersionWhenUnspecified = true;
            o.DefaultApiVersion = new ApiVersion(2, 0);
            o.ApiVersionReader = new UrlSegmentApiVersionReader();
        });
Run Code Online (Sandbox Code Playgroud)

当路由属性如下所示

[ApiVersion("2.0")]
[Route("api/v{version:apiVersion}/values")]
[ApiController]
public class ValuesV2Controller : ControllerBase
{
...
}
Run Code Online (Sandbox Code Playgroud)

上述路由仅在指定 api 版本时才有效。即:http://localhost:55401/api/v2/values 如果我调用像http://localhost:55401/api/values,得到 404 错误

我的问题是... AssumeDefaultVersionWhenUnspecified 是如何工作的。它不会忽略Route中的版本吗?看起来 Route 属性优先于 AssumeDefaultVersionWhenUnspecified。如果我选择 QueryString 或 Header 版本控制,并且当 Route 看起来像

[ApiVersion("2.0")]
[Route("api/values")]
Run Code Online (Sandbox Code Playgroud)

默认路由到达 API

我错过了什么还是我的理解有误?如何使用 url 版本控制实现到最新版本 API 的默认路由?

routing asp.net-core asp.net-core-webapi asp.net-core-2.0

8
推荐指数
2
解决办法
2321
查看次数