gpt4 book ai didi

c# - 找到多个与请求 http post 方法匹配的操作

转载 作者:太空狗 更新时间:2023-10-29 20:54:34 25 4
gpt4 key购买 nike

我对 Web Api 2 有疑问。我已经在我的 ContactGroupsController web api 中编写了这 3 个操作。

// POST api/contactgroups
[System.Web.Http.HttpPost]
public IEnumerable<ContactsGroup> All()
{
return _biz.GetAllContactsGroup();
}




// POST api/contactgroups/5
[System.Web.Http.HttpPost]
public ContactsGroup FindById(int id)
{
return _biz.GetContactGroup(id);
}




// POST api/contactgroups
public HttpResponseMessage CreateContactGroup(ContactsGroup item)
{
item.UserId = HttpContext.Current.User.Identity.GetUserId();
item.DateAdded = DateTime.Now;

if (!ModelState.IsValid)
return Request.CreateResponse(HttpStatusCode.NotAcceptable, item);

if (!_biz.CreateContactGroup(item)) return Request.CreateResponse(HttpStatusCode.NotFound, item);

HttpResponseMessage response = Request.CreateResponse(HttpStatusCode.Created, item);
response.Headers.Location = new Uri(Request.RequestUri + item.Id.ToString());
return response;
}

当我想发送一个 http post 方法到“/api/contactgroups”时出现这个错误:

  {
"$id": "1",
"Message": "An error has occurred.",
"ExceptionMessage": "Multiple actions were found that match the request: \r\nSystem.Collections.Generic.IEnumerable`1[NikSms.Models.ContactsGroup] All() on type NikSms.Web.Api.ContactGroupsController\r\nSystem.Net.Http.HttpResponseMessage CreateContactGroup(NikSms.Models.ContactsGroup) on type NikSms.Web.Api.ContactGroupsController",
"ExceptionType": "System.InvalidOperationException",
"StackTrace": " at System.Web.Http.Controllers.ApiControllerActionSelector.ActionSelectorCacheItem.SelectAction(HttpControllerContext controllerContext)\r\n at System.Web.Http.Controllers.ApiControllerActionSelector.SelectAction(HttpControllerContext controllerContext)\r\n at System.Web.Http.ApiController.ExecuteAsync(HttpControllerContext controllerContext, CancellationToken cancellationToken)\r\n at System.Web.Http.Dispatcher.HttpControllerDispatcher.SendAsyncCore(HttpRequestMessage request, CancellationToken cancellationToken)\r\n at System.Web.Http.Dispatcher.HttpControllerDispatcher.<SendAsync>d__0.MoveNext()"
}

这是 WebApiConfig.cs 的内容:

config.MapHttpAttributeRoutes();
config.Routes.MapHttpRoute(
"DefaultApiCtrl",
"api/{controller}/{action}/{id}",
new { id = RouteParameter.Optional});

config.Routes.MapHttpRoute(
"DefaultApi",
"api/{controller}/{id}",
new { id = RouteParameter.Optional});

谁能帮我解决一下?

最佳答案

我在这里找到了更好的解决方案:我们可以使用前缀 [RouteName("someRouteName")]请参阅下面的链接,Mike wasson 在 Route Prefixes 中对其进行了描述

希望对你有帮助

关于c# - 找到多个与请求 http post 方法匹配的操作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23342417/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com