Swagger不支持Swagger 2.0:带路径的多个操作

时间:2016-09-26 15:16:32

标签: asp.net-web-api2 swagger

我的Web Api 2控制器上有2个Get方法:

// GET: api/ClientApi
public HttpResponseMessage GetAll()
{
    IEnumerable<Client> clients = _clientRepository.GetAll();

    HttpResponseMessage response = Request.CreateResponse(HttpStatusCode.OK, clients);
    return response;
}

// GET: api/ClientApi/userId
public HttpResponseMessage GetAllClientsForUser(string userId)
{
    IEnumerable<Client> clients = _clientRepository.GetAll();
    var clientUsers = _clientUserRepository.FindAll(cu => cu.UserId == userId).ToList();
    var clientsForUser = clients.Where(i => clientUsers.Select(cu => cu.ClientId).ToList().Contains(i.Id)).ToList();

    HttpResponseMessage response = Request.CreateResponse(HttpStatusCode.OK, clientsForUser);
    return response;
}

// GET: api/ClientApi/clientId
public HttpResponseMessage GetClientById(int id)
{
    var client = _clientRepository.GetById<Client>(id);

    HttpResponseMessage response = Request.CreateResponse(HttpStatusCode.OK, client);
    return response;
}

虽然名字不同,但我得到了错误:

  

Swagger 2.0不支持:带路径的多个操作   &#39; API /客户&#39;和方法&#39; GET&#39;。

有办法解决这个问题吗?我尝试使用OperationFilter,在StackOverflow上的某个地方找到了这个但是没有用......

Route.config:

    routes.MapHttpRoute(
        name: "API Default",
        routeTemplate: "api/{controller}/{id}",
        defaults: new { id = RouteParameter.Optional }
    );

1 个答案:

答案 0 :(得分:4)

我希望这会对你有所帮助,我以这种方式解决了我的问题,转到你的swagger配置文件,在顶部添加以下内容:

int main(void)
{
  char **array = Split("Hello World!", " ");
  // Now you have the array
  // ...

  // Then free the memory
  Free_Array(array);
  array = NULL;
  return 0;
}

然后在第175行附近,或使用搜索并找到ResolveConflictingActions,你应该找到这行代码:

using System.Linq;

但是它被注释掉了,注释了这行代码,并希望这将解决你的问题,玩它,因为你可能不只是想要第一个。

在代码行上方,您将看到它的简短描述。希望这有用。