ASP.NET MVC6 - 请求的资源不支持http方法' GET'

时间:2015-05-28 15:26:32

标签: c# asp.net asp.net-mvc asp.net-core-mvc

我的目标是在后端使用的GET调用中按姓氏搜索。我有Get()和Get(int id)工作得非常好,虽然我花了一段时间来使SearchByLastName(字符串名称)工作但不能。这是我的控制器中的功能

// GET
[Route("api/member/byLastname/{id}")]
public IHttpActionResult SearchByLastName(string id)
{
    var member = _context.Members.SingleOrDefault(m => m.LastName == id);

    if (member == null)
    {
        return NotFound();
    }

    return Ok(member);
}

我不能为我的生活弄清楚为什么当其他Get功能执行并且路线看起来正确时,这不起作用。

在这种情况下我正在进行的通话看起来像这样: http://.../api/Member/byLastName/Smith

有什么想法吗?

2 个答案:

答案 0 :(得分:4)

哇我花了一个多小时试图找到答案,我在发布这个问题后立即得到答案。对不起。无论如何,答案是在名称中使用动词Get as prefix是惯例。我将我改为GetLastName(string id),现在可以使用了

答案 1 :(得分:1)

我建议不要使用Route[""]而是总是使用动词,而是支持路由,所以不是

[Route("api/member/byLastname/{id}")]

你可以做到

[HttpGet("api/member/byLastname/{id}")]

HttpGet属性位于Microsoft.AspNet.Mvc命名空间