2

デフォルトのMVC4アプリケーションにはRouteConfig、次のようなクラスが付属しています。

public static void RegisterRoutes(RouteCollection routes) {
    routes.IgnoreRoute("{resource}.axd/{*pathInfo}");

    routes.MapHttpRoute(
        name: "DefaultApi",
        routeTemplate: "api/{controller}/{id}",
        defaults: new { id = RouteParameter.Optional }
    );

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

私の質問は、なぜMapHttpRoute?これは、新しいWebApi機能のルーティングを設定していますが、WebApiプロジェクトを選択せず​​、通常のMVC4プロジェクトのみを選択しました。通常のMVC4プロジェクトでは、WebApiを必要とするものはないようです。

4

2 に答える 2

4

私はMVCとWebApiの背後にいるMicrosoft開発者の1人です。テンプレートに両方のテクノロジーのルート登録がある理由は、プロジェクトへのWebAPIコントローラーの追加を簡単に開始できるようにするためです。MVCの場合と同様に、ルートが登録されていない場合、Controllerクラスは機能しません。これらの2つのルートを使用することで、入門エクスペリエンスがもう少し開発者にとって使いやすくなります。

于 2012-10-01T15:18:54.617 に答える
2

ASP.NETWebAPIはASP.NETMVC4の機能です。これはASP.NETWebstackの一部です(愛の;)この背後にある考え方は、RESTFULサービスにHTTPの強い型のモデルを使用する場合、サポートは箱から出して。そして、「通常の」コントローラーでRESTFULリクエストを処理する代わりに、推奨される方法である必要があります。

Web APIプロジェクトテンプレートMVCを選択した場合、唯一の変更はプロジェクトファイルのツリー構造にあります。ただし、Web APIはMVCの一部であるため、通常のMVCプロジェクトの依存関係への参照の一部はそのまま残ります。

ASP.NET Web APIのルート登録が気になる場合は、いつでも削除できます。

于 2012-10-01T14:54:57.387 に答える