c#webapi - 请求的资源不支持http方法' GET'

时间:2017-05-17 15:34:46

标签: c# asp.net-web-api asp.net-web-api-routing

我有两种简单的路由方法:

主路由指令:

[RoutePrefix("api/accounts")]

第一个

[Route("user/{id:guid}", Name = "GetUserById")]
public async Task<IHttpActionResult> GetUser(string Id)

第二个

[Route("user/del/{id:guid}")]
public async Task<IHttpActionResult> DeleteUser(string id)

我想知道为什么如果我用直接ulr(GET)测试第一个方法,它可以工作:

http://localhost/ReportApp_WebApi/api/accounts/user/1533882b-e1fd-4b52-aeed-4799edbbcda6

如果我尝试的第二个链接有点不同:

http://localhost/ReportApp_WebApi/api/accounts/user/del/1533882b-e1fd-4b52-aeed-4799edbbcda6

我得到:请求的资源不支持http方法&#39; GET&#39;。

你能帮助我吗?

1 个答案:

答案 0 :(得分:1)

第二个链接不仅仅是有点不同。实际上,它指向您为delete方法定义的路由。这个方法需要DELETE Http动词。

当您直接在浏览器上编写URL时,它会执行GET请求。如果您希望删除方法与GET动词一起使用,则必须放置attribte

[HttpGet]

在您的路线引用之前或之后。 虽然我不建议这样做。你可以拥有像Fiddler或Postman这样的HTTP客户端来测试这个

Web Api在控制器中命名方法时使用约定。因为您将方法命名为DeleteUser,所以Web Api需要删除动词。

编辑&gt;&gt;&gt;请按照评论中列出的建议操作。我也大胆地提到了不推荐这个

的部分