私はWebApiコントローラを作成していましたが、HttpPost要求を使用して登録用の新しいユーザーを送信しようとしています。これは私のlocalhost上でうまく動作しますが、私がAzureに公開すると、405メソッドがエラーメッセージを受け取ることができません: "要求されたリソースはhttpメソッド 'GET'をサポートしていません。WebApiでGETのように扱われるHTTP POSTメソッド
私がアクションを確認するために郵便配達を使用して、私は次のようにある要求を、参照するコードを生成する使用:
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を使用しましたが、それらはすべて正常に動作します。
私はこの問題に取り組む方法が不明で、誰かがアイディアを持っているかどうか疑問に思っていましたか? 説明のためにコードを投稿する必要があるかどうかお知らせください。事前に
おかげで
httpの代わりにhttpsを使用すると動作するようです。 これは閉じることができます –
あなたのモデルを投稿用のボディに渡していますか?メソッドのパラメータに[FromBody]属性がないと考えてください。 –
私は[FromBody]を試してみたが、うまくいかなかった。私はhttpsを指定して試してみましたが、うまくいくようです。 私はしばらくの間ばかげていたに違いない –