【发布时间】:2021-07-31 16:11:28
【问题描述】:
我正在开发一个包含多个无状态服务的服务结构项目。当我尝试在下面的代码中添加版本控制时
[Authorize]
[ApiVersion("2.0")]
[Route("api/v{version:apiVersion}/[controller]")]
public class SessionController : Controller
{
...
}
稍后使用 Postman 或使用我为调用此服务而制作的某些客户端 winforms 应用程序调用该服务时,它不起作用。当我说它不起作用时,我的意思是它不是在寻找我放置在控制器中的特定版本。
例如 我正在调用 http://localhost:1234/api/v1.0/session/set-session,正如您在我的控制器中看到的那样,我只有 2.0 版。现在,无论我输入什么版本号,我的 API 都会以这种或另一种方式受到影响。
我在 Startup.cs 中添加了代码
services.AddApiVersioning(options => {
options.DefaultApiVersion = new ApiVersion(2, 0);
options.AssumeDefaultVersionWhenUnspecified = true;
options.ReportApiVersions = true;
options.ApiVersionReader = new HeaderApiVersionReader("x-api-version");
});
具体的 API 调用如下所示:
[HttpPost]
[Route("set-session")]
public async Task<IActionResult> SetSession([FromBody] SessionModel model)
{ ... }
谁能告诉我我缺少什么或者服务结构根本不支持 api 版本控制? 谢谢。
【问题讨论】:
标签: .net-core asp.net-core-webapi azure-service-fabric api-versioning