web-dev-qa-db-ja.com

同じソリューション内のMVCおよびWeb Apiプロジェクト

N層アプリケーションの上にMVC 4プロジェクトがあります。アプリケーションをプログラムで使用できるようにする必要があります。同じソリューション内で、MVCプロジェクトと並んでN層アプリケーションの上にある新しいWeb Apiプロジェクトを作成しました。

しかし、MVCレイヤーはスタートアッププロジェクトであり、DI、オートマッパーなどをセットアップし、サーバーにデプロイするプロジェクトであるため、これがどのように機能するかについては不明です。

では、これをどのように設定する必要がありますか?すべての/ apiリクエストを新しいWeb ApiプロジェクトにルーティングするようにMVCプロジェクトをセットアップできますか?または、Web Apiプロジェクトを個別に展開する必要がありますか?

慣例にとらわれない何かをしたくないので、これを設定するより一般的な方法があれば、胸が正しい方向に私を向けます。

ありがとう。

22
James

WebApiは、WCFと同様にMicrosoftが提供する代替のサービス指向アプリケーションです。ただし、WCFはSOAPプロトコルを使用し、WebAPIは通信にHTTPプロトコルを使用します。

そのため、MVCアプリケーションにサービスを提供するためにWCFを使用している場合、そのwcfサービスを個別にホストし、MVCアプリケーションによってそのサービスを消費します。WebAPIプロジェクトを個別にホストし、Webアプリケーション(MVC)にサービスを提供する方法とまったく同じです。

何らかの理由で、それら(MVCとWebAPI)を同じプロジェクトで使用する場合は、この記事のこのルールに従ってください。

http://odetocode.com/blogs/scott/archive/2013/07/01/on-the-coexistence-of-asp-net-mvc-and-webapi.aspx

12
Alagesan Palani

昨日も同じことをしました。同じMVC 4プロジェクトには、通常のコントローラーとApiControllersがあります。

Global Asax for WebApiにルーティングを追加する必要があります。

WebApiConfig.Register(GlobalConfiguration.Configuration);

WebApiConfigを見てください:

public static class WebApiConfig
{
    public static void Register(HttpConfiguration config)
    {
        config.Routes.MapHttpRoute(
            name: "DefaultApi",
            routeTemplate: "api/{controller}/{id}",
            defaults: new { id = RouteParameter.Optional }
        );
    }
}

WebApiのNugetパッケージを追加することも忘れないでください(まだお持ちでない場合)。私の場合、私のプロジェクトは元々MVC 3であり、後でアップグレードされたため、それらはありませんでした。

8
Hugo Hilário

ルーティングおよびAPIコントローラーを既存のMVCサイトに追加するだけで、site/api/

0
Trevor Pilley