маршруты атрибутов с тем же именем 'odata /v {версия: apiversion} /parts' должен иметь одинаковый шаблон:
action: '... v2.controllers.partscontroller.get' - шаблон: 'odata/v {версия: apiversion}/parts/odata/v {версия: apiversion}/parts'
action: '... v2. Controllers.partscontroller.get ' - Template:' Odata/V {версия: Apiversion}/Parts '
action: '... v1.controllers.partscontroller.get' - Template: 'Odata/V {версия: Apiversion}/Parts'
action: '... v1.controllers.partscontroller.get' - template: 'Odata /v {версия: apiversion}/parts '
Мои контроллеры смотрят Как: < /p>
Код: Выделить всё
namespace ...v1.Controllers
{
[ApiController]
[ApiExplorerSettings(GroupName = "v1")]
[ApiVersion("1")]
[Route("odata/v{version:apiVersion}/[controller]")]
public class PartsController : ODataController
{
[Produces("application/json")]
[EnableQuery]
[HttpGet]
public async Task Get()
{
...
}
}
}
< /code>
и < /p>
namespace ...v2.Controllers
{
[ApiController]
[ApiExplorerSettings(GroupName = "v2")]
[ApiVersion("2")]
[Route("odata/v{version:apiVersion}/[controller]")]
public class PartsController : ODataController
{
[Produces("application/json")]
[EnableQuery]
[HttpGet]
public async Task Get()
{
...
}
}
}
< /code>
и мой startup.cs имеет следующую конфигурацию: < /p>
public void ConfigureServices(IServiceCollection services)
{
...
services.AddControllers()
.AddOData(options =>
{
options.EnableQueryFeatures(maxTopValue: 8000);
options.TimeZone = TimeZoneInfo.Utc;
});
services.AddApiVersioning(options =>
{
options.AssumeDefaultVersionWhenUnspecified = true;
options.DefaultApiVersion = new ApiVersion(1);
options.ReportApiVersions = true;
options.ApiVersionReader = new UrlSegmentApiVersionReader();
})
.AddMvc()
.AddOData(options =>
{
options.AddRouteComponents("odata/v{version:apiVersion}");
})
.AddODataApiExplorer(options =>
{
options.GroupNameFormat = "'v'V";
options.SubstituteApiVersionInUrl = true;
});
...
}
public void Configure(IApplicationBuilder app)
{
...
app.UseRouting();
app.UseEndpoints(endpoints =>
{
endpoints.MapControllers();
});
...
}
Подробнее здесь: https://stackoverflow.com/questions/794 ... -endpoints