2017-09-18 1 views
0

私のWeb APIのメソッドへのポストリクエストをしようとしていますが、エラー405: Method not allowedが発生しています。 Fiddlerを使用すると、より具体的なエラーメッセージがThe requested resource does not support http method 'POST'であることがわかります。 POSTを有効にするために、さまざまな方法を試しましたが、うまくいかないようです。Web APIにPOSTできない

私のAPIでの方法:

[HttpPost] 
public IHttpActionResult GetOrders(string param1, string param2, string param3) 
{ 
    // logic 
    // logic 
    // logic 

    return Json(orders); 
} 

と私は$.postを使用して、私の見解では、それを呼んでいます。これは、ビューと同じファイルにAPIメソッドがある場合はうまく動作しますが、APIを外してGetOrders()をAPIに入れると、ブレークしてPOSTを許可しません。私の方法に投稿できるように、私は行方不明のものがありますか? CORSはweb.configで有効になっており、私のメソッドの上に[EnableCors(origins: "*", headers: "*", methods: "*")]で設定しようとしましたが、これはどちらでも再生したくないようです。

+0

GetOrdersメソッドはデータを受け入れません。なぜ、それをHttpGetメソッドに変更しないのですか? –

+0

私の例を単純化しました。私はそれを編集します。 'GetOrders()'は実際にパラメータを取るので、私は問題を実証するためのメソッドの例を書き直しました。 – etempo11

答えて

0

あなたのWeb.Configでこれを追加

<httpProtocol> 
     <customHeaders> 
     <add name="Access-Control-Allow-Origin" value="*" /> 
     <add name="Access-Control-Allow-Headers" value="Content-Type" /> 
     <add name="Access-Control-Allow-Methods" value="GET, POST, PUT, DELETE, OPTIONS" /> 
     </customHeaders> 
    </httpProtocol> 

あなたはでアクションを飾るする必要はありません[EnableCors]

また、別の文字列を渡して、モデルに

[HttpPost] 
public IHttpActionResult GetOrders(MyModel model) 
{ 
    // logic 
    // logic 
    // logic 

    return Json(orders); 
} 

public class MyModel{ 
    public string string1 {get;set;} 
    public string string2 {get;set;} 
} 
に合格しよう
+0

こんにちは、答えに感謝します。これら3つはすでにWeb.configに入っているので、これは動作しません。 – etempo11

+0

モデルをパラメータとして置き換えようとしましたが、それは私のために働いています –

関連する問題