Web API 2 在不支持 HTTP 方法时不会说未授权



我刚刚测试一个新的 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]属性装饰控制器和方法,并且我还设置了全局筛选器。

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

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

最新更新