我的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 }
);
答案 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;
但是它被注释掉了,注释了这行代码,并希望这将解决你的问题,玩它,因为你可能不只是想要第一个。
在代码行上方,您将看到它的简短描述。希望这有用。