371

VisualStudio2012で開発されたASP.NETMVC4WebアプリケーションプロジェクトにASP.NETWebAPIを追加したいと思います。機能するWebAPIをプロジェクトに追加するには、どの手順を実行する必要がありますか?ApiControllerから派生したコントローラーが必要であることは承知していますが、私が知っているのはそれだけです。

詳細を提供する必要がある場合はお知らせください。

4

9 に答える 9

471

実行する必要のある手順は次のとおりです。

  1. への参照を追加しSystem.Web.Http.WebHostます。
  2. 追加App_Start\WebApiConfig.csします(以下のコードスニペットを参照)。
  3. System.Web.Httpに名前空間をインポートしますGlobal.asax.cs
  4. デフォルトのWebアプリケーションルートを登録する前にWebApiConfig.Register(GlobalConfiguration.Configuration)MvcApplication.Application_Start()(ファイル内でGlobal.asax.cs)呼び出します。そうしないと優先されます。
  5. から派生したコントローラーを追加しSystem.Web.Http.ApiControllerます。

その後、チュートリアル(最初のASP.NET Web API)から、APIコントローラーを定義するのに十分なことを学ぶことができました。

App_Start \ WebApiConfig.cs:

using System.Web.Http;

class WebApiConfig
{
    public static void Register(HttpConfiguration configuration)
    {
        configuration.Routes.MapHttpRoute("API Default", "api/{controller}/{id}",
            new { id = RouteParameter.Optional });
    }
}

Global.asax.cs:

using System.Web.Http;

...

protected void Application_Start()
{
    AreaRegistration.RegisterAllAreas();

    RegisterGlobalFilters(GlobalFilters.Filters);
    WebApiConfig.Register(GlobalConfiguration.Configuration);
    RegisterRoutes(RouteTable.Routes);
    BundleConfig.RegisterBundles(BundleTable.Bundles);
}

2015年10月16日更新:

Wordにはそれがあります。上記を機能させるには、NuGetパッケージMicrosoft.AspNet.WebApiをインストールする必要があります。

于 2012-08-17T07:33:40.013 に答える
81

UPDATE11/22/2013-これは最新のWebApiパッケージです。

Install-Package Microsoft.AspNet.WebApi

元の回答(これは古いWebApiパッケージです)

Install-Package AspNetWebApi

詳細。_

于 2013-02-14T20:23:06.263 に答える
79

MVC5プロジェクトにWebAPIを追加します。

  1. NuGetパッケージマネージャーコンソールを開き、実行します

    PM> Install-Package Microsoft.AspNet.WebApi
    
  2. System.Web.RoutingSystem.Web.Netおよびdllへの参照を追加します(System.Net.Httpまだ存在しない場合)

  3. コントローラフォルダを右クリック>新しいアイテムを追加>Web>WebAPIコントローラを追加

  4. Web.configは、VSによって適宜変更されます

  5. Application_Startまだ存在しない場合はメソッドを追加します

    protected void Application_Start()
    {
        //this should be line #1 in this method
        GlobalConfiguration.Configure(WebApiConfig.Register);
    }
    
  6. 次のクラスを追加します(global.asax.csファイルに追加しました)

    public static class WebApiConfig
    {
         public static void Register(HttpConfiguration config)
         {
             // Web API routes
             config.MapHttpAttributeRoutes();
    
             config.Routes.MapHttpRoute(
                 name: "DefaultApi",
                 routeTemplate: "api/{controller}/{id}",
                 defaults: new { id = RouteParameter.Optional }
             );
         }
     }
    
  7. それに応じてWebAPIメソッドを変更します

    namespace <Your.NameSpace.Here>
    {
        public class VSController : ApiController
        {
            // GET api/<controller>   : url to use => api/vs
            public string Get()
            {
                return "Hi from web api controller";
            }
    
            // GET api/<controller>/5   : url to use => api/vs/5
            public string Get(int id)
            {
                return (id + 1).ToString();
            }
        }
    }
    
  8. 再構築してテストする

  9. 簡単なHTMLページを作成する

    <html xmlns="http://www.w3.org/1999/xhtml">
    <head>
        <title></title>    
        <script src="../<path_to_jquery>/jquery-1.9.1.min.js"></script>
        <script type="text/javascript">
            var uri = '/api/vs';
            $(document).ready(function () {
                $.getJSON(uri)
                .done(function (data) {
                    alert('got: ' + data);
                });
    
                $.ajax({
                    url: '/api/vs/5',
                    async: true,
                    success: function (data) {
                        alert('seccess1');
                        var res = parseInt(data);
                        alert('got res=' + res);
                    }
                });
            });
        </script>
    </head>
    <body>
    ....
    </body>
    </html>
    
于 2015-12-10T06:03:27.260 に答える
29

コントローラフォルダの下に「WebApiコントローラ」を追加するとすぐに、VisualStudioが依存関係を自動的に処理します。

Visual Studioは、ASP.NET WebAPI2の依存関係の完全なセットをプロジェクト「MyTestProject」に追加しました。

プロジェクト内のGlobal.asax.csファイルでは、ASP.NETWebAPIを有効にするために追加の変更が必要になる場合があります。

  1. 次の名前空間参照を追加します。

    System.Web.Httpを使用します。System.Web.Routingを使用します。

  2. コードでApplication_Startメソッドがまだ定義されていない場合は、次のメソッドを追加します。

    保護されたvoidApplication_Start(){}

  3. Application_Startメソッドの先頭に次の行を追加します。

    GlobalConfiguration.Configure(WebApiConfig.Register);

于 2014-07-22T05:13:11.997 に答える
22

次の画像のように、nugetからインストールできます。

ここに画像の説明を入力してください

または、パッケージマネージャーコンソールで以下のコマンドラインを実行します。

Install-Package Microsoft.AspNet.WebApi
于 2012-08-16T15:25:47.083 に答える
21

MVCプロジェクトとWebAPIプロジェクトのマージを開始する前に、これらを異なるプロジェクトとして分離するための短所と長所について読むことをお勧めします。(私自身の)非常に重要なことの1つは、認証システムです。これはまったく異なります。

MVCとWebAPIの両方で認証済みリクエストを使用する必要がある場合、Web APIはRESTfulである(セッションを維持する必要はない、単純なHTTPリクエストなど)が、MVCはそうではないことを覚えておく必要があります。

実装の違いを確認するには、テンプレートからVisual Studio 2013で2つの異なるプロジェクトを作成します。1つはMVC用、もう1つはWeb API用です(作成時に「個別認証」をオンにすることを忘れないでください)。AuthencationControllersには多くの違いがあります。

したがって、注意してください。

于 2014-06-29T20:30:28.983 に答える
13

注:これは上記の回答の略語です

  1. NuGetパッケージマネージャーコンソールを開き、実行します

    PM> Install-Package Microsoft.AspNet.WebApi
    
  2. System.Web.RoutingSystem.Web.Netおよびdllへの参照を追加します(System.Net.Httpまだ存在しない場合)

  3. 次のクラスを追加します

    public static class WebApiConfig
    {
         public static void Register(HttpConfiguration config)
         {
             // Web API routes
             config.MapHttpAttributeRoutes();
    
             config.Routes.MapHttpRoute(
                 name: "DefaultApi",
                 routeTemplate: "api/{controller}/{id}",
                 defaults: new { id = RouteParameter.Optional }
             );
         }
     }
    
  4. Application_Startまだ存在しない場合はメソッドを追加します(global.asax.csファイル内)

    protected void Application_Start()
    {
        //this should be line #1 in this method
        GlobalConfiguration.Configure(WebApiConfig.Register);
    }
    
  5. コントローラフォルダを右クリック>新しいアイテムを追加>Web>WebAPIコントローラを追加

    namespace <Your.NameSpace.Here>
    {
        public class VSController : ApiController
        {
            // GET api/<controller>   : url to use => api/vs
            public string Get()
            {
                return "Hi from web api controller";
            }  
        }
    }
    
于 2019-03-05T11:44:54.243 に答える
3

上記の解決策は完全に機能します。下の図に示すように、プロジェクトテンプレートを選択するときにWebAPIオプションを選択することを好みます

注:このソリューションは、VisualStudio2013以降で動作します。元の質問は2012年に行われ、2016年であるため、VisualStudio2013以降のソリューションが追加されています。

WebAPIオプションを示すプロジェクトテンプレート

于 2016-04-21T14:29:12.323 に答える
1

私は同じ問題を抱えていました、解決策はとても簡単でした

「SulotionのNugetパッケージの管理」からsolotioninstallMicrosoft.ASP.NET.WebApiを右クリックします。

ブームそれだけです;)

于 2019-05-22T06:28:50.103 に答える