[解決済み] 既存のASP.NET MVC (5) WebアプリケーションプロジェクトにWeb APIを追加する方法は?
質問
MVC(5)の新規プロジェクト作成時に、Web APIのチェックボックスにチェックを入れる(プロジェクトに追加する)のを忘れたと仮定して、Web APIを追加して動作させるには、どうしたらよいでしょうか。
移行に関する質問はたくさんありますが、MVC 5プロジェクトにWeb APIを追加するための完全で最新の手順が書かれているものはないようで、いくつかの古い回答とは変わっているようです。
GlobalConfiguration.Configure(WebApiConfig.Register)の追加 MVC 4
解決方法は?
MVCプロジェクトの更新
使用方法 ナゲット をクリックすると、最新のWeb APIを取得できます。
プロジェクト - 右クリック - Nugetパッケージの管理 - Web API (Microsoft ASP.NET Web API ...) を検索して、MVCプロジェクトにインストールします。
それから、まだ Web API ルーティング を動作させることができます。 から マイクロソフトのConfiguring ASP.NET Web API 2
WebApiConfig.cs を App_Start/ フォルダに追加します。
using System.Web.Http;
namespace WebApplication1
{
public static class WebApiConfig
{
public static void Register(HttpConfiguration config)
{
// TODO: Add any additional configuration code.
// Web API routes
config.MapHttpAttributeRoutes();
config.Routes.MapHttpRoute(
name: "DefaultApi",
routeTemplate: "api/{controller}/{id}",
defaults: new { id = RouteParameter.Optional }
);
// WebAPI when dealing with JSON & JavaScript!
// Setup json serialization to serialize classes to camel (std. Json format)
var formatter = GlobalConfiguration.Configuration.Formatters.JsonFormatter;
formatter.SerializerSettings.ContractResolver =
new Newtonsoft.Json.Serialization.CamelCasePropertyNamesContractResolver();
}
}
}
MVC プロジェクトを作成した場合、そのプロジェクトには
グローバル.asax.cs
で、新しいルートを追加してください。
Global.asax.csのルートの順番は重要です。
を使用する古い例があることに注意してください。
WebApiConfig.Register
この行をGlobal.asax.csに追加してください。
GlobalConfiguration.Configure(WebApiConfig.Register);
protected void Application_Start()
{
// Default stuff
AreaRegistration.RegisterAllAreas();
// Manually installed WebAPI 2.2 after making an MVC project.
GlobalConfiguration.Configure(WebApiConfig.Register); // NEW way
//WebApiConfig.Register(GlobalConfiguration.Configuration); // DEPRECATED
// Default stuff
FilterConfig.RegisterGlobalFilters(GlobalFilters.Filters);
RouteConfig.RegisterRoutes(RouteTable.Routes);
BundleConfig.RegisterBundles(BundleTable.Bundles);
}
WebAPIヘルプ
を取得するには、( 非常に ) WebAPIヘルプページ の場合は、WebAPI.HelpPageをインストールしてください。 参照 http://channel9.msdn.com/Events/Build/2014/3-644 (約42分)をご覧ください。とても参考になりそうですね。
Nugetコンソールです。
Install-Package Microsoft.AspNet.WebApi.HelpPage
WebAPIが動作していることを確認するため。
controllers フォルダに -> 新規項目 -> Web API Controller Class を追加します。
public class TestController : ApiController
{
//public TestController() { }
// GET api/<controller>
public IEnumerable<string> Get()
{
return new string[] { "value1", "value2" };
}
// GET api/<controller>/5
public string Get(int id)
{
return "value";
}
//...
}
これで、いつものようにIE/FF/Chromeでテストできます。また、getしないテストの場合はJavaScriptコンソールでテストできます。
(URLにコントローラを指定すると、新しいWeb APIコントローラのGET()アクションが呼び出されます。これはRESTに応じて、例えばPUT/POST/GET/DELETEなどのメソッド/アクションに自動的にマップされます。MVCのようにアクションによってそれらを呼び出す必要はありません) URLを直接指定します。
http://localhost:PORT/api/CONTROLLERNAME/
または jQueryを使用してコントローラに問い合わせる。 プロジェクトを実行し、コンソール (IE では F12) を開いて、Ajax クエリを実行してみてください。(PORT & CONTROLLERNAMEを確認してください)
$.get( "http://localhost:PORT/api/CONTROLLERNAME/", function( data ) {
//$( ".result" ).html( data );
alert( "Get data received:" + data);
});
補足:MVCとWeb APIを組み合わせたプロジェクトでは、いくつかの長所と短所を考慮する必要があります。
WebAPIヘルプの検証。
http://localhost:PORT/help
関連
-
[解決済み】"出力タイプがクラスライブラリのプロジェクトは直接起動できない"
-
[解決済み】WebResource.axdとは何ですか?
-
[解決済み] Chromeを使用してASP.NET Web APIがXMLの代わりにJSONを返すようにするにはどうすればよいですか?
-
[解決済み] ASP.NET WebサイトとASP.NET Webアプリケーションのどちらを選ぶか?
-
[解決済み] ファイルアップロード ASP.NET MVC 3.0
-
[解決済み] ASP.NET MVC Frameworkで複数のサブミットボタンを処理する方法は?
-
[解決済み] ASP.NET MVCでenumからドロップダウンリストを作成するにはどうすればよいですか?
-
[解決済み] ASP.NET MVC - カスタムIIdentityまたはIPrincipalの設定
-
[解決済み] ASP.NET MVCでビューをコンパイルする
-
[解決済み] 既存のASP.NET MVC 4 WebアプリケーションのプロジェクトにWeb APIを追加するにはどうすればよいですか?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み】GDI+、JPEG画像をMemoryStreamに変換する際にジェネリックエラーが発生しました。
-
[解決済み】コンパイルエラー「未割り当てのローカル変数を使用しています」が発生したのはなぜですか?
-
[解決済み】C#におけるtypedefの等価性
-
[解決済み】"The ConnectionString property has not been initialized "を修正する方法
-
[解決済み】トランスポート接続からデータを読み取れない:既存の接続は、リモートホストによって強制的に閉じられました。
-
[解決済み】C# ASP.NET使用時に「WebClientのリクエスト中に例外が発生しました。
-
[解決済み】「namespace x already contains a definition for x」エラーの修正方法は?VS2010にコンバートした後に発生しました。
-
[解決済み】WPFでXamlファイルにコメントを追加する方法は?
-
[解決済み】パラメータ付きRedirectToAction
-
[解決済み] 既存のASP.NET MVC 4 WebアプリケーションのプロジェクトにWeb APIを追加するにはどうすればよいですか?