1

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
4

1 に答える 1