无法将API的v2版本设置为默认路由c#

无法将API的v2版本设置为默认路由c#,c#,asp.net-mvc,controller,routes,C#,Asp.net Mvc,Controller,Routes,因此,我有两个版本的控制器(及其GET操作),让我们称它为v1和v2 ../Controller/v1/MyController.cs看起来像 [ApiVersion("1")] [Route("api/[controller]")] [Route("api/v{version:apiVersion}/[controller]")] public class MyController : Controller { .. [HttpGet] public async Task<

因此,我有两个版本的控制器(及其GET操作),让我们称它为
v1
v2

../Controller/v1/MyController.cs
看起来像

[ApiVersion("1")]
[Route("api/[controller]")]
[Route("api/v{version:apiVersion}/[controller]")]
public class MyController : Controller
{
..
[HttpGet]
        public async Task<IActionResult> GetAsync()
        {
        ..
        }
}
[ApiVersion("2")]
[Route("api/v{version:apiVersion}/[controller]")]
public class MyController : Controller
{
..
[HttpGet]
        public async Task<IActionResult> GetAsync()
        {
        ..
        }
}
此API当前由
localhost:5000/v2/my
访问

现在,我想将v2作为默认API,而不是v1

因此,我尝试添加
[Route(“api/[controller]”)属性
,使我的
v2控制器看起来像:

[ApiVersion("2")]
[Route("api/[controller]")]
[Route("api/v{version:apiVersion}/[controller]")]
public class MyController : Controller
{
..
[HttpGet]
        public async Task<IActionResult> GetAsync()
        {
        ..
        }
}
但是,默认路由在设置时适用于v1版本。 我不知道为什么会这样。是因为名称空间吗?控制器类的位置在命名空间中包含v2


任何潜在客户都会有帮助。

在启动文件中,您可以设置默认的Api版本

services.AddApiVersioning(o => {
            o.ReportApiVersions = true;
            o.AssumeDefaultVersionWhenUnspecified = true;
            o.**DefaultApiVersion** = new ApiVersion(2, 0);
        });
services.AddApiVersioning(o => {
            o.ReportApiVersions = true;
            o.AssumeDefaultVersionWhenUnspecified = true;
            o.**DefaultApiVersion** = new ApiVersion(2, 0);
        });