新しい Web API 機能を使用するために、新しい ASP.Net MVC4 ソリューションを作成しました。ApiController から継承するコントローラーがあり、AttributeRouting プロジェクト(おそらくここで最もよく説明されている) を使用してルートを設定しています。
POST 用に次のメソッドを設定しました。
[POST("bank/{id}")]
public void Post(int id, BankRequest bank)
{
// Create a new Bank here
}
これをFiddlerから呼び出すと、Visual Studio 2012 でこれをデバッグして、すべてが期待どおりに機能することを確認できます。ID が正しく、json が BankRequest オブジェクトに自動的に正しくシリアル化されていることがわかります。すべてとてもいいと思います。GET も期待どおりに機能します。
次に、PUT にも同様の方法があります。
[PUT("bank/{id}")]
public void Put(int id, BankRequest bank)
{
// Update a Bank here
}
問題は、これを呼び出すときに HTTP 404 Not Found メッセージが表示されることです。POST から PUT に変更するだけで、まったく同じ URL と json を送信するだけです。Fiddler で行うことは、POST から PUT に変更するだけなので、URL と json は保持されます。POST に戻すと、正常に動作します。機能しないのは派手な AttributeRouting なのか、それとも他の何かが間違っているのかはわかりません。
誰かが理由を知っていますか?
他の人が定義した API をセットアップしているので、PUT をサポートする必要があることに注意してください。