2012/11/19

[ASP.Net] MVC3 專案升級至 MVC4

前置作業:
1. 透過 Microsoft Web Platform Installer 安裝 MVC4 開發套件.
2. 備份既有的 MVC 3 專案.

  1. 透過 Microsoft Web Platform Installer 選取 "ASP.NET MVC 4 with Language Packs"進行安裝.(圖一)
    Microsoft Web Platform Installer
    圖一. 透過 Microsoft Web Platform Installer 安裝
  2. 按下 "我接受" 後開始安裝.

    安裝 MVC 4

    圖二. 安裝 MVC4.
  3. 安裝完畢後, 電腦(64位元)中的 C:\Program Files (x86)\Microsoft ASP.NET\ 會多一個 ASP.NET MVC 4 的目錄; C:\Program Files (x86)\Microsoft ASP.NET\ASP.NET Web Pages\ 目錄中會多一個 v2.0 的目錄.
    此兩個目錄也表示了這次 MVC 4 主要是將 MVC 版本從 3.0.0.0 升到 4.0.0.0, Web Pages 從 1.0.0.0 升到 2.0.0.0.
  4. 修改 Web 應用程式目錄中 Web.config:
    • <appSettings>: 
      1. <add key="webpages:Version" value="1.0.0.0" />: 從1.0.0.0 升級為 2.0.0.0
      2. 新增 <add key="webpages:Enabled" value="false" />
      3. 新增 <add key="PreserveLoginUrl" value="true" />
    • <system.web>/<compilation>/<assemblies>: 
      1. <add assembly="System.Web.Helpers, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" />: 從1.0.0.0 升級為 2.0.0.0
      2. <add assembly="System.Web.WebPages, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" />: 從1.0.0.0 升級為 2.0.0.0
      3. <add assembly="System.Web.Mvc, Version=3.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" />: 從 3.0.0.0 升級為 4.0.0.0
  5. 修改 Views/Web.config:
    • <configSections>:
      1. <sectionGroup name="system.web.webPages.razor" type="System.Web.WebPages.Razor.Configuration.RazorWebSectionGroup, System.Web.WebPages.Razor, Version=2.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35">: 從1.0.0.0 升級為 2.0.0.0
      2. 將 <sectionGroup> 下的 host 與 pages 從1.0.0.0 升級為 2.0.0.0 
    • <system.web.webPages.razor>:
      1. <host factoryType="System.Web.Mvc.MvcWebRazorHostFactory, System.Web.Mvc, Version=3.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" />: 從3.0.0.0 升級為 4.0.0.0
      2. <pages>/<namespaces> 內新增 <add namespace="System.Web.Optimization"/>
    • <system.web>:
      1. 將 <pages> 中的 pageParserFilterType, pageBaseType 與 userControlBaseType 從 3.0.0.0 升級到4.0.0.0
      2. 將 <pages>/<controls> 下的 System.Web.Mvc 從 3.0.0.0 升級到4.0.0.0
  6. 如果還有另外客製化的 Web.config 檔, 也要一併修改. 簡單的規則就是把 3.0.0.0 升級到4.0.0.0, 1.0.0.0 升級到 2.0.0.0. 若是不確定版本是多少, 請至第四步中的兩個資料夾中去看相對應 dll 的 version.
  7. 重新加入 Reference 的 dll:
    1. 1.0.0.0 升級到 2.0.0.0:
        System.Web.Helpers
        System.Web.WebPages
        System.Web.Razor
        System.Web.WebPages.Deployment
        System.Web.WebPages.Razor 
    2. 3.0.0.0 升級到 4.0.0.0
        System.Web.Mvc
    (這邊建議將有用到的 dll 都先加入 Reference, 並設定 Copy Local 為 True 以方便佈版)
  8. 修改 .csproj 檔案:
    使用記事本將專案的 .csproj 開啟, 找到 <ProjectTypeGuids>, 將 {E53F8FEA-EAE0-44A6-8774-FFD645390401} 改為 {E3E379DF-F4C6-4180-9B81-6769533ABE47}. 修改完後記得儲存後再開啟專案.
  9. 如果佈署的主機上未安裝 MVC 4 的套件, 可透過錯誤訊息一個個補上, 或是直接從第四步的目錄中複製過去.
  10. 另外, 若在 IIS7 上佈署後遇到 401.0 的錯誤訊息, 可至 IIS 管理工具 -> 點選該站台 -> 在右方的 IIS 區塊中, 找到 [驗證] 這個功能.
    確認 [Windows驗證] 與 [基本驗證] 這兩個都是啟用狀態.

沒有留言: