The Will Will Web

記載著 Will 在網路世界的學習心得與技術分享

如何在現有 ASP.NET MVC 5 專案上加入 ASP.NET Web API

如果你已經建立好一個 ASP.NET MVC 5,而又突然想要加入 ASP.NET Web API 2 的相關套件與設定檔,你可以參考本篇文章解說的 SOP 進行設定。所有步驟也都以 Git 進行版控,各位可以到 https://github.com/doggy8088/MVC5_Add_WebAPI 查閱每個步驟的變更紀錄

1. 先將 ASP.NET MVC 5 升級到最新版,並檢查 web.config 中的 <runtime> 設定

Update-Package Microsoft.AspNet.Mvc

web.config 檔案中先找到以下設定

      <dependentAssembly>
        <assemblyIdentity name="System.Web.Mvc" publicKeyToken="31bf3856ad364e35" />
        <bindingRedirect oldVersion="1.0.0.0-5.2.2.0" newVersion="5.2.2.0" />
      </dependentAssembly>

然後修改成正確的 ASP.NET MVC 5 版本編號 (可參考 packages.config 中的版本號)

      <dependentAssembly>
        <assemblyIdentity name="System.Web.Mvc" publicKeyToken="31bf3856ad364e35" />
        <bindingRedirect oldVersion="1.0.0.0-5.2.3.0" newVersion="5.2.3.0" />
      </dependentAssembly>

2. 安裝 ASP.NET Web API 相關套件 (請利用套件管理員主控台輸入以下指令)

Install-Package Microsoft.AspNet.WebApi
Install-Package Microsoft.AspNet.WebApi.Client.zh-Hant
Install-Package Microsoft.AspNet.WebApi.Core.zh-Hant
Install-Package Microsoft.AspNet.WebApi.WebHost.zh-Hant

3. 新增 /App_Start/WebApiConfig.cs 檔案,並填入以下程式碼

※ 請注意 namespace 要修改成你目前專案的預設命名空間!

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web.Http;

namespace MVC5
{
    public static class WebApiConfig
    {
        public static void Register(HttpConfiguration config)
        {
            // Web API 設定和服務

            // Web API 路由
            config.MapHttpAttributeRoutes();

            config.Routes.MapHttpRoute(
                name: "DefaultApi",
                routeTemplate: "api/{controller}/{id}",
                defaults: new { id = RouteParameter.Optional }
            );
        }
    }
}

4. 修改 Global.asax.cs 檔案,註冊 ASP.NET Web API 相關設定

Global.asax.cs 檔案最上方引用 System.Web.Http 命名空間

using System.Web.Http;

在 Application_Start() 方法中的 AreaRegistration.RegisterAllAreas(); 這行下方加入以下程式碼

GlobalConfiguration.Configure(WebApiConfig.Register);

我個人通常會多加上這行,因為我幾乎用不到 XML 格式輸出:

GlobalConfiguration.Configuration.Formatters.XmlFormatter.SupportedMediaTypes.Clear();

※ 相關文章: 如何讓 ASP.NET Web API 無論任何要求都回應 JSON 格式

5. 如果你要安裝 ASP.NET Web API 線上說明文件的話,可直接安裝 Microsoft.AspNet.WebApi.HelpPage 套件,所有相關檔案與 Area 都會自動建立完成

Install-Package Microsoft.AspNet.WebApi.HelpPage

※ 相關文章: 如何在 ASP.NET MVC 4 專案加上 Web API 與 API 說明頁面