URI 内的版本不受支持的 API 版本 — 出了什么问题?

iqu*_*lis 5 c# rest .net-core api-versioning

我有一个使用.net core 2.2 的Web API 项目(也许存在问题。)

这些路由正在等待 OpenIdDict 的 OAuth 授权,但这对我来说完全没问题。我正在尝试一种非常简单的方法:

startup.cs 仅包含:

services.AddApiVersioning();
Run Code Online (Sandbox Code Playgroud)

API 控制器具有三种不同的路由用于测试目的。请注意,控制器本身没有 [Route()] 或 [ApiVersion()] 注释。

[HttpGet]
[Authorize]
[ApiVersion("2.0")]
[Route("api/v{version:apiVersion}/vt")]
public IActionResult GetVt20()
{
    return Ok("2.0");
}

[HttpGet]
[Authorize]
[ApiVersion("1.0")]
[Route("api/v{version:apiVersion}/vt")]
public IActionResult GetVt10()
{
    return Ok("1.0");
}
Run Code Online (Sandbox Code Playgroud)

如果我执行授权请求,例如

http://localhost:27713/api/v1.0/vt
Run Code Online (Sandbox Code Playgroud)

.net core 用 BadRequest 回答:

{"error":{"code":"UnsupportedApiVersion","message":"The HTTP resource that matches the request URI 'http://localhost:27713/api/v1.0/vt' does not support the API version '1.0'.","innerError":null}}
Run Code Online (Sandbox Code Playgroud)

我缺少什么?

小智 4

从 2.1 net core 迁移到 2.2 时我遇到了同样的问题只需添加到您的控制器类 [ApiController] 属性

Github 问题