WebAPI 和 OData8 与 Swagger 中的控制器名称冲突

问题描述 投票:0回答:1

因此,从我围绕控制器名称冲突和 swagger 问题进行的研究来看,我遇到了一个似乎很常见的问题。

如果我在控制器一中有两个 Get() 函数 和控制器二中的两个 Get() 函数我收到错误:

Conflicting method/path combination "GET {id}" for actions

重要注意事项:

  • 仅当在我的控制器中我直接调用 ODataController 时才会出现此错误,如下所示
public class OrdersController : ODataController
  • 这个错误不会出现如果我出现
public class OrdersController : BaseApiController
using Microsoft.AspNetCore.Mvc;
using Microsoft.AspNetCore.OData.Routing.Controllers;

namespace API.Controllers
{
    [ApiController]
    [Route("api/[controller]")]
    public class BaseApiController : ODataController
    {
        
    }
}

我现在遇到的主要问题是 Swagger 显示两组端点:

一个用于我所有的 /api/ 端点以及 /odata/ (重复),我只想要 odata 端点。但如果我删除路线,错误就会再次发生

c# api asp.net-core swagger webapi
1个回答
0
投票

同时删除

[ApiController]
[Route("api/[controller]")]

这是本文档中的 OData 控制器示例

© www.soinside.com 2019 - 2024. All rights reserved.