无法将API的v2版本设置为默认路由c#
因此,我有两个版本的控制器(及其GET操作),让我们称它为无法将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<
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);
});