c# - 当不支持 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]
属性的方法,并且我也设置了一个全局过滤器。
解决方案
你得到的消息GET
是完全准确的。您没有 GET 修饰动作,因此The requested resource does not support http method 'GET'
.
由于 API 必须首先尝试找到与您的请求签名匹配的方法,因此您对获得未授权的担忧不起作用。由于它找不到 a GET
then 它返回错误。
推荐阅读
- java - PDFTextStripper 提取不正确的泰语文本
- javascript - 使用 GatsbyJS 的 GraphQL 查询中的范围文件夹结构
- sql - 将正确的 SQL 转换为 HQL
- configuration - VuePress 配置中的前端默认值
- c# - 无法在网格控件存储库中添加行lookupedit 在单元格失去焦点时变为空
- powershell - 在 PowerShell ISE 中编辑暂停消息
- mysql - 在mysql中左连接三个表,内连接两个
- artifactory - 无法启动 JFrog Artifactory
- python - 检查文件体系结构的通用方法
- php - Web - 重定向访问目录而不是文件的人