5

我一直在創建一個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,它們都正常工作。

我不確定如何解決這個問題,並想知道如果有人有任何想法? 請讓我知道如果我需要發佈更多的代碼澄清。

在此先感謝

+1

似乎工作時,我使用https而不是http。 這可以關閉 –

+0

您是否將您的模型傳遞給Post for Body?認爲你在方法參數中缺少[FromBody]屬性。 –

+0

我試過[FromBody],它沒有奏效。雖然我只是通過指定https來嘗試它,並且它似乎工作。 我一定是白癡了一段時間 –

回答

10

原來我用的,而不是以https HTTP,。

+0

如果這真的是所有的問題,你應該接受這個答案(左邊的複選標記),讓其他用戶可能會發現你的問題,這是解決方案。 –

+0

對不起,我貼不了,需要等兩天。謝謝你提醒我 –

+0

不用擔心! :) –