0

我有两个 ApiController

[ApiVersion( "1" )]
[RoutePrefix( "v{version:apiVersion}/account" )]
public class LoginController1 : BaseController

[ApiVersion( "2" )]
[RoutePrefix( "v{version:apiVersion}/account" )]
public class LoginController2 : BaseController

Swagger 不会显示 Login v2,直到我在 V1 控制器中更改RoutePrefix"v2/account"代替{version:apiVersion} 或更改相同的内容也产生相同的效果。

这意味着其中之一应该是非模式前缀我正在使用 ASP.NET Api(不是 .NET Core)和Swagger-Net版本 8.3.23.1103。

4

1 回答 1

1

这里可能有几个问题。

控制器命名约定要求具有Controller后缀 - 完全正确。这可能意味着LoginController1LoginController2会出现问题,但Login1ControllerLogin2Controller 应该可以按预期工作。

您是否在使用API 版本控制 API Explorer扩展?您将希望/需要该包来支持 Swagger/OpenAPI 文档生成器中的 API 版本分组。

由于您按 URL 段进行版本控制,您可能希望相应的 API 版本自动替换在 URL 路径中。这可以通过以下配置来实现:

configuration.AddVersionedApiExplorer(options.SubstituteApiVersionInUrl = true);

我希望这会有所帮助。

于 2020-03-25T18:29:29.137 回答