HTTP POST方法在WebApi上被当作GET处理

本文关键字:GET 处理 POST 方法 WebApi HTTP | 更新日期: 2023-09-27 18:02:22

我一直在创建一个WebApi控制器,我正在尝试使用HttpPost请求提交一个新用户进行注册。这在我的本地主机上工作得很好,但是当我将它发布到Azure时,我得到一个405方法不允许错误的消息:"请求的资源不支持http方法' get '"。

我使用postman检查动作,因此我使用generate代码来查看请求,如下所示:

POST /api/account/register/student HTTP/1.1
Host: www.l3cture.com
Content-Type: application/json
Cache-Control: no-cache
Postman-Token: 27c1b2ab-96ad-4a99-b271-4030402768e7

所以我可以清楚地看到请求是POST。以下是带有其属性的控制器动作代码(我目前已经简化了它,因此没有发布模型,并且发生相同的行为)

[HttpPost]
[Route("register/student")]
[AllowAnonymous]
public async Task<IHttpActionResult> PostStudent(/*RegisterStudent model*/)
{
    //Implementation of register
    return Ok();
}

我检查了属性的命名空间,是System.Web。Http,所以它不会与MVC命名空间混淆。

有趣的是,当我将方法更改为HttpGet,并使用postman向其POST时,我收到状态200。就好像控制器把HttpPost请求都当作HttpGet处理。

我在其他地方使用了HttpPut和HttpDelete,它们都工作得很好。

我不知道如何解决这个问题,不知道有没有人有什么建议?如果我需要发布更多的代码来澄清,请让我知道。

Thanks in advance

HTTP POST方法在WebApi上被当作GET处理

原来我使用的是Http,而不是Https。