Asp.net web api Swashback中一个控制器的多个版本

Asp.net web api Swashback中一个控制器的多个版本,asp.net-web-api,swagger,swashbuckle,Asp.net Web Api,Swagger,Swashbuckle,我正在使用WebApi和Swagger/Swashback 我有一个版本的所有控制器,但对于其中一个控制器,我想引入版本控制,但保留旧版本 所以对于ControllerA,只有一个版本,我想继续这样做 对于ControllerB,我只需要两个版本 如果可能的话,我可以将未版本的url重定向到v1 我认为我基本上需要使用SingleApi版本,因为我的大多数控制器只有一个版本。在SwaggerConfig内部,我有一句话: c.SingleApiVersion("v1", "MySite.

我正在使用WebApi和Swagger/Swashback

我有一个版本的所有控制器,但对于其中一个控制器,我想引入版本控制,但保留旧版本

所以对于ControllerA,只有一个版本,我想继续这样做

对于ControllerB,我只需要两个版本

如果可能的话,我可以将未版本的url重定向到v1

我认为我基本上需要使用SingleApi版本,因为我的大多数控制器只有一个版本。在SwaggerConfig内部,我有一句话:

c.SingleApiVersion("v1", "MySite.Api");
然而,当我尝试这一点时,我无法在大摇大摆的UI中看到MyController,也无法在Postman中调用它

[Route("api/v{version:apiVersion}/[controller]")]  
public class MyController : ApiController
{
    [ApiVersion("1.0")]
    [HttpPost]
    public HttpResponseMessage MyMethod([FromBody] MyRequest myRequest)
    {
        return MyCode(myRequest);
    }

    [ApiVersion("2.0")]
    [HttpPost]
    public HttpResponseMessage MyMethod([FromBody] MyRequest myRequest)
    {
        return MyNewCode(myRequest);
    }
}
我想我可能混淆了单个属性和多个属性,但我不想使用整个API的多个版本,但我只有一个,只有一个控制器的新版本。可以这样做吗?

你试过吗

[ApiVersion( "2.0" )]
[ApiVersion( "3.0" )]
[Route( "api/v{version:apiVersion}/helloworld" )]
public class HelloWorldController : ApiController
{
    public string Get() => "Hello world v2!";

    [MapToApiVersion( "3.0" )]
    public string GetV3() => "Hello world v3!";
}