'How to set default versioning in ASP.NET Core 6 Web API for my scenario?

Just realised that my understanding about ASP.NET Core 6 Web API versioning is wrong.

This is my controller:

[ApiVersion("1.0")]
[ApiController]
[Authorize]
public class FundController 
{
    [MapToApiVersion("1.0")]
    [Route("/Fund/v{version:apiVersion}/delta")]
    public async Task<List<PortfolioHolding<Holding>>> Delta([FromQuery] Request dataModel)
    {
    }
}

What I want is to support route /Fund/v1.0/delta and /Fund/delta, when versioning not provided by the consumer (e.g. calling /Fund/delta), the default version will be hit.

So I configured the versioning like this. However, when I call /Fund/delta, I get a http 404 error.

But /Fund/v1.0/delta will hit the correct controller.

What am I doing wrong?

services.AddApiVersioning(option =>
        {
            option.DefaultApiVersion = new ApiVersion(1, 0);
            option.AssumeDefaultVersionWhenUnspecified = true;
            option.ReportApiVersions = true;
        });


Sources

This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.

Source: Stack Overflow

Solution Source