Visual Studio 2012で開発されたASP.NET MVC 4 WebアプリケーションプロジェクトにASP.NET Web APIを追加したいと思います。機能するWeb APIをプロジェクトに追加するには、どの手順を実行する必要がありますか?私はApiControllerから派生するコントローラーが必要であることは承知していますが、それだけです。
さらに詳しい情報が必要な場合はお知らせください。
Visual Studio 2012で開発されたASP.NET MVC 4 WebアプリケーションプロジェクトにASP.NET Web APIを追加したいと思います。機能するWeb APIをプロジェクトに追加するには、どの手順を実行する必要がありますか?私はApiControllerから派生するコントローラーが必要であることは承知していますが、それだけです。
さらに詳しい情報が必要な場合はお知らせください。
回答:
私が実行する必要があったステップは次のとおりでした:
System.Web.Http.WebHost
ます。App_Start\WebApiConfig.cs
(以下のコードスニペットを参照)。System.Web.Http
をインポートしますGlobal.asax.cs
。WebApiConfig.Register(GlobalConfiguration.Configuration)
、MvcApplication.Application_Start()
(ファイルでGlobal.asax.cs
)呼び出します。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が上記の動作のためにインストールされている必要があります。
UPDATE 11/22/2013-これは最新のWebApiパッケージです。
Install-Package Microsoft.AspNet.WebApi
元の回答(これは古いWebApiパッケージです)
Install-Package AspNetWebApi
その他の詳細。
Install-Package Microsoft.AspNet.WebApi
現在必要です。nuget.org/packages/Microsoft.AspNet.WebApi
MVC 5プロジェクトにWebAPIを追加します。
NuGetパッケージマネージャーコンソールを開いて実行する
PM> Install-Package Microsoft.AspNet.WebApi
参照を追加しSystem.Web.Routing
、System.Web.Net
そしてSystem.Net.Http
既に存在するDLLでない場合
コントローラーフォルダーを右クリック>新しい項目を追加> Web> Web APIコントローラーを追加
Web.configはVSによって適宜変更されます
Application_Start
メソッドがまだない場合は追加します
protected void Application_Start()
{
//this should be line #1 in this method
GlobalConfiguration.Configure(WebApiConfig.Register);
}
次のクラスを追加します(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 }
);
}
}
それに応じてWeb APIメソッドを変更する
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();
}
}
}
再構築およびテスト
シンプルな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>
controllersフォルダの下に「WebApi Controller」を追加するとすぐに、Visual Studioが依存関係を自動的に処理します。
Visual Studioは、ASP.NET Web API 2の依存関係の完全なセットをプロジェクト 'MyTestProject'に追加しました。
プロジェクトのGlobal.asax.csファイルでは、ASP.NET Web APIを有効にするために追加の変更が必要になる場合があります。
次の名前空間参照を追加します。
System.Web.Httpを使用します。System.Web.Routingを使用します。
コードがまだApplication_Startメソッドを定義していない場合は、次のメソッドを追加します。
protected void Application_Start(){}
Application_Startメソッドの先頭に次の行を追加します。
GlobalConfiguration.Configure(WebApiConfig.Register);
Install-Package Microsoft.AspNet.WebApi
2.新しい項目「Web API Controller Class(v2.1)」を追加します。結果:APIコントローラーが追加されますが、変更されませんApplication_Start
。オーウィンと。
以下の画像のようにnugetからインストールできます:
または、パッケージマネージャーコンソールで次のコマンドラインを実行します。
Install-Package Microsoft.AspNet.WebApi
MVCプロジェクトとWeb APIプロジェクトのマージを開始する前に、短所と長所を読んで、これらを異なるプロジェクトとして分離することをお勧めします。非常に重要なことの1つ(私自身)は、認証システムです。
MVCとWeb APIの両方で認証済みリクエストを使用する必要がある場合、Web APIはRESTfulである(セッションや単純なHTTPリクエストなどを保持する必要がない)ことを覚えておく必要がありますが、MVCはそうではありません。
実装の違いを確認するには、テンプレートからVisual Studio 2013で2つの異なるプロジェクトを作成します。1つはMVC用で、もう1つはWeb API用です(作成時に「個人認証」をオンにすることを忘れないでください)。AuthencationControllersには多くの違いがあります。
したがって、注意してください。
注:これは上記のこの回答の略称です
NuGetパッケージマネージャーコンソールを開いて実行する
PM> Install-Package Microsoft.AspNet.WebApi
参照を追加しSystem.Web.Routing
、System.Web.Net
そしてSystem.Net.Http
既に存在するDLLでない場合
次のクラスを追加します
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 }
);
}
}
Application_Start
メソッドがまだない場合は追加します(global.asax.csファイル内)
protected void Application_Start()
{
//this should be line #1 in this method
GlobalConfiguration.Configure(WebApiConfig.Register);
}
コントローラーフォルダーを右クリック>新しい項目を追加> Web> Web APIコントローラーを追加
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";
}
}
}
上記のソリューションは完全に機能します。下の図に示すように、プロジェクトテンプレートを選択する際にWeb APIオプションを選択したい
注:このソリューションは、Visual Studio 2013以降で動作します。元の質問は2012年に行われたもので2016年なので、Visual Studio 2013以降のソリューションを追加します。
私は同じ問題を抱えていました、解決策はとても簡単でした
solotionを右クリックして、「Nuloget Package for Sulotionの管理」からMicrosoft.ASP.NET.WebApiをインストールします。
それだけのブームです;)
System.Net.Http
も追加する必要がありましたが、それ以外は魅力的に機能しました!