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

c# webapi - The requested resource does not support http method 'GET'

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

主要路由指令:

[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

如果我尝试第二个 link,那就有点不同了:

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

我得到:请求的资源不支持 http 方法 'GET'。

你能帮帮我吗?

第二个link不仅有点不同。事实上,它指向您为删除方法定义的路由。此方法需要 DELETE Http 动词。

当您直接在浏览器上写入 url 时,它会执行 GET 请求。如果你想让你的 delete 方法与 GET 动词一起工作,你必须把 attribte

[HttpGet]

在您的路由属性之前或之后。 虽然我不建议这样做。您可以使用 Fiddler 或 Postman 等 HTTP 客户端来测试这个

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

编辑>>>请遵循评论中列出的建议。 不推荐的部分我也加粗了