我一直在創建一個WebApi控制器,並且我試圖使用HttpPost請求來提交註冊的新用戶。這在我的本地主機上正常工作,但是當我將它發佈到Azure時,我得到一個405方法不允許錯誤消息:「請求的資源不支持http方法'GET'」。HTTP POST方法在WebApi上處理方式與GET相同
我用郵遞員來檢查行動,所以我用生成代碼來查看請求,這是如下:
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並使用郵遞員向其發送POST時,我收到狀態200.這幾乎就像我的控制器將HttpPost請求全部視爲HttpGet一樣。
我在其他地方使用過HttpPut和HttpDelete,它們都正常工作。
我不確定如何解決這個問題,並想知道如果有人有任何想法? 請讓我知道如果我需要發佈更多的代碼澄清。
在此先感謝
似乎工作時,我使用https而不是http。 這可以關閉 –
您是否將您的模型傳遞給Post for Body?認爲你在方法參數中缺少[FromBody]屬性。 –
我試過[FromBody],它沒有奏效。雖然我只是通過指定https來嘗試它,並且它似乎工作。 我一定是白癡了一段時間 –