1

WebAPIが有効になっているMVC4Webプロジェクトがあります。

APIコントローラーにデータを投稿したいのですが、投稿が機能していません。毎回404を取得しています(Addメソッド内のブレークポイントがヒットしていません)。

コードは次のとおりです。

public class IncidentSessionLogController : ApiController
{
   [HttpPost]
   public void Add(MyInputDTO inputData)
   {
   }
}

アクションベースのルーティングを使用します。

public static void Register(HttpConfiguration config)
{
   config.Routes.MapHttpRoute(
       name: "ControllerAndAction",
       routeTemplate: "api/{controller}/{action}");

   config.Routes.MapHttpRoute(
       name: "ControllerAndActionAndId",
       routeTemplate: "api/{controller}/{action}/{id}",
       defaults: new { id = RouteParameter.Optional });
}

Fiddlerを使用してデータを投稿します。

http://localhost:42901/api/IncidentSessionLog/Add

私のサイトは現在開発用のIISExpressでホストされており、Fiddlerのリクエスト本文にJSONオブジェクトリテラルを追加しています。

4

1 に答える 1

0

私の同僚のおかげで、それを修正しました!

MVCルーティング(最初に投稿するのを忘れていました)がAPIルーティングに干渉していたため、MVCルーティングに制約を追加する必要があります。

routes.MapRoute(
                name: "Default",
                url: "{controller}/{action}/{id}",
                defaults: new { controller = "Game", action = "Start", id = UrlParameter.Optional },
                constraints: new { controller = @"^((?!(api)).)*$" });
于 2013-01-29T13:25:40.507 に答える