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)
(ファイルGlobal.asax.cs
内)、beforeでMvcApplication.Application_Start()
を呼び出します。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);
}
更新10.16.2015:
Wordはそれを持っています、NuGetパッケージMicrosoft.AspNet.WebApiは上で機能するためにインストールされなければなりません。
UPDATE 11/22/2013 - これは最新のWebApiパッケージです。
Install-Package Microsoft.AspNet.WebApi
元の回答(これは以前のWebApiパッケージです)
Install-Package AspNetWebApi
もっと 詳細 。
MVC 5プロジェクトにWebAPIを追加します。
NuGet Package Managerコンソールを開いて実行します
PM> Install-Package Microsoft.AspNet.WebApi
System.Web.Routing
、System.Web.Net
、およびSystem.Net.Http
dllsへの参照がまだない場合は追加します。
コントローラフォルダを右クリック>新しい項目を追加> 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メソッドをまだ定義していない場合は、次のメソッドを追加します。
保護されたvoid Application_Start(){}
Application_Startメソッドの先頭に次の行を追加します。
GlobalConfiguration.Configure(WebApiConfig.Register);
以下の画像のようにnugetからインストールできます。
または、パッケージマネージャコンソールで以下のコマンドラインを実行します。
Install-Package Microsoft.AspNet.WebApi
MVCプロジェクトとWeb APIプロジェクトをマージし始める前に、 短所と長所 を読んでこれらを別々のプロジェクトとして分離することをお勧めします。非常に重要なことの1つ(私自身)は認証システムです。これはまったく異なります。
認証済みのリクエストをMVCとWeb APIの両方で使用する必要がある場合、Web APIはRESTfulです(セッションを維持する必要はない、単純なHTTPリクエストなど)が、MVCはそうではありません。
実装の違いを調べるには、Visual Studio 2013でTemplatesから2つの異なるプロジェクトを作成するだけです。1つはMVC用で、もう1つはWeb API用です(作成中に "Individual Authentication"をオンにすることを忘れないでください)。あなたはAuthencationControllersの中で多くの違いを見るでしょう。
それで、注意してください。
注:これは単なる この回答 の略です
NuGet Package Managerコンソールを開いて実行します
PM> Install-Package Microsoft.AspNet.WebApi
System.Web.Routing
、System.Web.Net
、およびSystem.Net.Http
dllsへの参照がまだない場合は追加します。
次のクラスを追加
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 }
);
}
}
Global.asax.csファイルにApplication_Start
メソッドがない場合は追加します。
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";
}
}
}
私は同じ問題を抱えていた、解決策はとても簡単でした
ソリューションを右クリックし、 "Manage Nuget Package for Solution"からMicrosoft.ASP.NET.WebApiをインストールします。
それが本だ。