5

私は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を使用しましたが、それらはすべて正常に動作します。

私はこの問題に取り組む方法が不明で、誰かがアイディアを持っているかどうか疑問に思っていましたか? 説明のためにコードを投稿する必要があるかどうかお知らせください。事前に

おかげで

+1

httpの代わりにhttpsを使用すると動作するようです。 これは閉じることができます –

+0

あなたのモデルを投稿用のボディに渡していますか?メソッドのパラメータに[FromBody]属性がないと考えてください。 –

+0

私は[FromBody]を試してみたが、うまくいかなかった。私はhttpsを指定して試してみましたが、うまくいくようです。 私はしばらくの間ばかげていたに違いない –

答えて

10

は私がHTTPSではなく、HTTPを使用してましたが判明します。

+0

これは本当に問題があった場合は、この答え(左側のチェックマーク)を受け入れることで解決策であると思われる他のユーザーに聞かせてください。 –

+0

ええ、申し訳ありませんが、投稿したときに2日待たなくてはなりませんでした。思い出してくれてありがとう –

+0

心配しないで! :) –

関連する問題