MVC4 プロジェクトにWebApi コントローラーがありServicesApiController
、次のような署名があります。
[Authorize(Roles = "sysadmin,Secretary")]
[AcceptVerbs("GET", "POST")]
public IEnumerable<Stock> TopRankedStocks(int maxRecords)
{
// do stuff
return result;
}
API コントローラーのルーティングは次のようになります。
config.Routes.MapHttpRoute(
name: "ServicesApi",
routeTemplate: "api/{controller}/{action}",
defaults: new { controller = "ServicesApi", action="Index" }
);
IIS Express を使用しhttp://localhost:62281/api/ServicesApi/TopRankedStocks?maxRecords=20
て、ブラウザで に移動すると、データ オブジェクトの優れた xml リストが表示されます。
ただし、次のように呼び出すと:
myHttpClient.BaseAddress = "http://localhost:62281/";
var arguments = new List<KeyValuePair<string, string>>(new[] { KeyValuePair<string, string>("maxRecords", "10") });
var content = new FormUrlEncodedContent(arguments);
var result = myHttpClient.PostAsJsonAsync("/api/ServicesApi/TopRankedStocks", content).Result;
...404 (Not Found) エラーが発生します。
POST 操作は、コード内の他の場所で機能します。アプリケーションと IIS Express の構成ファイルはすべて、すべての動詞を許可しています。なぜこれが機能しないのかわかりません。誰かが私に手がかりを与えることができますか?
これに関連する情報があるかどうかはわかりませんが、ここに価値がある場合に備えて投稿します。
- Windows 8 64、4GB RAM
- Resharper を使用した Visual Studio 2012 Professional Update 2
- IIS エクスプレス 8
- .NET フレームワーク 4.5