首页 > 解决方案 > 当不支持 HTTP 方法时,Web API 2 不会说未经授权

问题描述

我只是在测试一个新的 POST 方法,不小心发送了一个未经授权的 GET 请求,得到的响应是:

"message": "The requested resource does not support http method 'GET'."

但是当我发送一个 POST 请求时,我得到了这个响应:

"message": "Authorization has been denied for this request."

如果我未经授权甚至未通过身份验证,无论我做什么,我都不应该收到未经授权的消息吗?

这是方法:

[Route("api/search"), HttpPost, Authorize]
public async Task<IHttpActionResult> Search()
{
   ...
}

我尝试过装饰控制器和带有[Authorize]属性的方法,并且我也设置了一个全局过滤器。

标签: c#.netasp.net-web-api2authorizationbearer-token

解决方案


你得到的消息GET是完全准确的。您没有 GET 修饰动作,因此The requested resource does not support http method 'GET'.

由于 API 必须首先尝试找到与您的请求签名匹配的方法,因此您对获得未授权的担忧不起作用。由于它找不到 a GETthen 它返回错误。


推荐阅读