web-dev-qa-db-ja.com

「MapHttpRoute」と「MapRoute」の違いは?

「DefaultApi」ルーティングに「MapHttpRoute」を使用しながら、「Default」ルーティングに「MapRoute」を使用する理由

routes.MapHttpRoute(
  name: "DefaultApi",
  routeTemplate: "api/{controller}/{action}"
);

routes.MapRoute(
  name: "Default",
  url: "{controller}/{action}/{id}",
  defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional }
);
67
Dean

ASP.NET上でWeb APIを使用する場合、最終的には両方とも同じ基になるASP.NETルートテーブルで動作しますが、正しく指摘されているように、ユーザーの観点から2つの異なるメソッドを呼び出してルートを登録します。

ASP.NETの外部でホストするときにWeb APIがSystem.Webに依存する必要がないように、ルーティングはこのように設計されました。

Web APIは、MVC、Webフォーム、またはASP.NETの最上位に位置していないことに注意してください。 Webコンテキスト(ASP.NET)内でホストできますが、自己ホスト(コンソール、WPFなど)することもできますし、メモリ内でホストすることもできます(ポートを使用せず、軽量のエンドツーエンドテストに便利です)。

60
Filip W

MapRouteは「通常の」ASP.NET MVCコントローラー用で、MapHttpRouteはWeb APIコントローラー用です。

27