VisualStudio2012で開発されたASP.NETMVC4WebアプリケーションプロジェクトにASP.NETWebAPIを追加したいと思います。機能するWebAPIをプロジェクトに追加するには、どの手順を実行する必要がありますか?ApiControllerから派生したコントローラーが必要であることは承知していますが、私が知っているのはそれだけです。
詳細を提供する必要がある場合はお知らせください。
VisualStudio2012で開発されたASP.NETMVC4WebアプリケーションプロジェクトにASP.NETWebAPIを追加したいと思います。機能するWebAPIをプロジェクトに追加するには、どの手順を実行する必要がありますか?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をインストールする必要があります。
UPDATE11/22/2013-これは最新のWebApiパッケージです。
Install-Package Microsoft.AspNet.WebApi
元の回答(これは古いWebApiパッケージです)
Install-Package AspNetWebApi
詳細。_
MVC5プロジェクトにWebAPIを追加します。
NuGetパッケージマネージャーコンソールを開き、実行します
PM> Install-Package Microsoft.AspNet.WebApi
System.Web.Routing
、System.Web.Net
およびdllへの参照を追加します(System.Net.Http
まだ存在しない場合)
コントローラフォルダを右クリック>新しいアイテムを追加>Web>WebAPIコントローラを追加
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 }
);
}
}
それに応じて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();
}
}
}
再構築してテストする
簡単な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>
コントローラフォルダの下に「WebApiコントローラ」を追加するとすぐに、VisualStudioが依存関係を自動的に処理します。
Visual Studioは、ASP.NET WebAPI2の依存関係の完全なセットをプロジェクト「MyTestProject」に追加しました。
プロジェクト内のGlobal.asax.csファイルでは、ASP.NETWebAPIを有効にするために追加の変更が必要になる場合があります。
次の名前空間参照を追加します。
System.Web.Httpを使用します。System.Web.Routingを使用します。
コードでApplication_Startメソッドがまだ定義されていない場合は、次のメソッドを追加します。
保護されたvoidApplication_Start(){}
Application_Startメソッドの先頭に次の行を追加します。
GlobalConfiguration.Configure(WebApiConfig.Register);
次の画像のように、nugetからインストールできます。
または、パッケージマネージャーコンソールで以下のコマンドラインを実行します。
Install-Package Microsoft.AspNet.WebApi
MVCプロジェクトとWebAPIプロジェクトのマージを開始する前に、これらを異なるプロジェクトとして分離するための短所と長所について読むことをお勧めします。(私自身の)非常に重要なことの1つは、認証システムです。これはまったく異なります。
MVCとWebAPIの両方で認証済みリクエストを使用する必要がある場合、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
およびdllへの参照を追加します(System.Net.Http
まだ存在しない場合)
次のクラスを追加します
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>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";
}
}
}
私は同じ問題を抱えていました、解決策はとても簡単でした
「SulotionのNugetパッケージの管理」からsolotioninstallMicrosoft.ASP.NET.WebApiを右クリックします。
ブームそれだけです;)