ASP.NET MVC 4 版本資訊

本文件描述 ASP.NET MVC 4 的版本。

安裝注意事項

Visual Studio 2010 的 ASP.NET MVC 4 版本可以使用 Web Platform Installer 從 ASP.NET MVC 4 首頁進行安裝。

建議您先解除安裝任何先前安裝的 ASP.NET MVC 4 預覽版,再安裝 ASP.NET MVC 4。 您可以將 ASP.NET MVC 4 Beta 和候選版升級為 ASP.NET MVC 4,完全不用解除安裝。

此版本與 .NET Framework 4.5 的任何預覽版本不相容。 您必須先將 .NET Framework 4.5 的任何已安裝預覽版本個別升級至最終版本,再安裝 ASP.NET MVC 4。

ASP.NET MVC 4 可以安裝,並與 ASP.NET MVC 3 並存執行。

文件集

MSDN 網站上提供 ASP.NET MVC 的說明文件,網址如下:

https://go.microsoft.com/fwlink/?LinkID=243043

ASP.NET 網站的 MVC 4 頁面上提供 ASP.NET MVC 的教學課程和其他資訊 (https://www.asp.net/mvc/mvc4)。

支援

完全支援 MVC 4 ASP.NET。 如果有使用此版本的問題,您也可以將此問題張貼到 ASP.NET MVC 論壇 (https://forums.asp.net/1146.aspx),ASP.NET 社群的成員經常能夠在裡頭提供非正式的支援。

軟體需求

Visual Studio 的 ASP.NET MVC 4 元件需要 PowerShell 2.0 和 Visual Studio 2010 Service Pack 1 或 Visual Web Developer Express 2010 Service Pack 1。

ASP.NET MVC 4 的新功能

本節描述 ASP.NET MVC 4 版本中引進的功能。

ASP.NET Web API

ASP.NET MVC 4 包括 ASP.NET Web API,這個新架構可用來建立可觸及各種用戶端的 HTTP 服務,這些用戶端包括瀏覽器和行動裝置。 ASP.NET Web API 也是建置 RESTful 服務的理想平台。

ASP.NET Web API 包含下列功能的支援:

  • 現代 HTTP 程式設計模型:使用新的強型別 HTTP 物件模型,直接存取及操作 Web API 中的 HTTP 要求和回應。 相同的程式設計模型和 HTTP 管線可在用戶端上透過新的 HttpClient 類型進行對稱使用。
  • 完整支援路由: ASP.NET Web API 支援 ASP.NET 路由的完整路由功能集,包括路由參數和條件約束。 此外,使用簡單慣例將動作對應至 HTTP 方法。
  • 內容交涉:用戶端和伺服器可以一起運作,並判斷從 Web API 傳回資料的正確格式。 ASP.NET Web API 提供 XML、JSON 和表單 XML 編碼格式的預設支援,您可以藉由新增自己的格式器來擴充此支援,甚至取代預設的內容交涉策略。
  • 模型繫結和驗證: 模型繫結器可讓您輕鬆地從 HTTP 要求的各個部分擷取資料,並將這些訊息部分轉換成 Web API 動作可以使用的 .NET 物件。 同時也會根據資料註釋對動作參數執行驗證。
  • 篩選:ASP.NET Web API 支援篩選,包括已知篩選,例如 [Authorize] 屬性。 您可以撰寫並插入您自己的篩選,並用於動作、授權和例外狀況處理。
  • 查詢組合:在傳回 IQueryable 的動作上使用 [Queryable] 篩選屬性,並透過 OData 查詢慣例,啟用支援查詢 Web API。
  • 改進可測試性:Web API 動作會操作處理 HttpRequestMessageHttpResponseMessage 執行個體,而不是在靜態內容物件中設定 HTTP 詳細資料。 建立單元測試專案與您的 Web API 專案,並快速開始編寫 Web API 功能的單元測試。
  • 以程式碼為基礎的組態:ASP.NET Web API 組態完全透過程式碼完成,未用到您的組態檔。 使用所提供的服務定位器模式來設定擴充點。
  • 改進控制反轉 (IoC) 容器支援:ASP.NET Web API 透過改進相依性解析程式抽象層,提供絕佳 IoC 容器支援
  • 自我裝載:除了 IIS,Web API 也可以裝載在您自己的處理序中,同時仍使用 Web API 的完整路由和其他功能。
  • 建立自訂說明和測試頁面:您現在可以使用新的 IApiExplorer 服務,輕鬆建置 Web API 的自訂說明和測試頁面,並取得 Web API 的完整執行階段描述。
  • 監視和診斷:ASP.NET Web API 現在提供輕量追蹤基礎結構,可與現有的記錄解決方案輕鬆達到整合,例如 System.Diagnostics、ETW 和第三方紀錄架構。 您可以提供 ITraceWriter 實作,並將其新增至 Web API 設定,啟用追蹤功能。
  • 連結產生:使用 ASP.NET Web API UrlHelper,並在相同應用程式中產生相關資源的連結。
  • Web API 專案範本:選取新的 Web API 專案,形成 [新增 MVC 4 專案精靈],並快速啟動並執行 ASP.NET Web API。
  • Scaffolding: 使用新增控制器 對話方塊,根據 Entity Framework 模型類型,快速建立 Web API 控制器。

如需有關 ASP.NET Web API 的詳細資料,請造訪 https://www.asp.net/web-api

預設專案範本的增強功能

用來建立新 ASP.NET MVC 4 專案的範本已更新,可建立外觀更為現代的網站:

新增專案範本頁面檢視的螢幕擷取畫面。

除了外觀變更,新範本中還有改善功能。 此範本採用名為調適型轉譯的技術,呈現精美的桌面瀏覽器和行動瀏覽器,而不需要任何自訂作業。

新專案範本頁面桌面版本的行動瀏覽器檢視的螢幕擷取畫面。

若要查看作用中的調適性轉譯,您可以使用行動模擬器,或只是嘗試調整桌面瀏覽器視窗並縮小。 當瀏覽器視窗調整到足夠小時,頁面的配置將會變更。

行動專案範本

如果您要啟動新的專案,而且想要特別建立行動和平板電腦瀏覽器的網站,您可以使用新的行動應用程式專案範本。 這是以 jQuery Mobile 為基礎,可用於建置觸控最佳化 UI 的開放原始碼程式庫:

行動應用程式專案範本之行動瀏覽器檢視的螢幕擷取畫面。

此範本包含與網際網路應用程式範本相同的應用程式結構 (且控制器程式碼幾乎完全相同),但它的樣式採用 jQuery Mobile,外觀精美,且在觸控式行動裝置運作良好。 若要深入了解如何建構和設定行動版 UI 的樣式,請參閱 jQuery Mobile 專案網站

如果您已經有想要在其中新增行動最佳化檢視的桌面導向版網站,或想要建立單一網站,以提供不同樣式檢視的桌面和行動瀏覽器,則您可以使用新的顯示模式功能。 (請參閱下一節)。

顯示模式

新的顯示模式功能可讓應用程式根據提出要求的瀏覽器來選取檢視。 例如,如果桌面瀏覽器要求首頁,則應用程式可能會使用 Views\Home\Index.cshtml 範本。 如果行動瀏覽器要求首頁,應用程式可能會傳回 Views\Home\Index.mobile.cshtml 範本。

您也可以針對特定瀏覽器類型覆寫版面配置和部分。 例如:

  • 如果您的 Views\Shared 資料夾同時包含 _Layout.cshtml 和 _Layout.mobile.cshtml 範本,則應用程式預設會在行動瀏覽器的要求期間使用 _Layout.mobile.cshtml,並在其他要求期間使用 _Layout.cshtml。
  • 如果資料夾同時包含 _MyPartial.cshtml 和 _MyPartial.mobile.cshtml,指令 @Html.Partial("_MyPartial") 會在行動瀏覽器的要求期間轉譯 _MyPartial.mobile.cshtml,並在其他要求期間轉譯 _MyPartial.cshtml。

如果您想要為其他裝置建立更具體的檢視、版面配置或部分檢視,您可以註冊新的 DefaultDisplayMode 執行個體,並指定在要求符合特定條件時要搜尋的名稱。 例如,您可以將下列程式碼新增至 Global.asax 檔案中的 Application_Start 方法,將字串「iPhone」登記為顯示模式,並在 Apple iPhone 瀏覽器提出要求時套用:

DisplayModeProvider.Instance.Modes.Insert(0, new
DefaultDisplayMode("iPhone")
{
    ContextCondition = (context => context.GetOverriddenUserAgent().IndexOf
        ("iPhone", StringComparison.OrdinalIgnoreCase) >= 0)
});

執行此程式碼之後,當 Apple iPhone 瀏覽器提出要求時,您的應用程式會使用 Views\Shared\_Layout.iPhone.cshtml 版面配置 (如果已有)。 如需顯示模式的詳細資訊,請參閱 ASP.NET MVC 4 行動功能。 使用 DisplayModeProvider 的應用程式應該安裝已修正的 DisplayModes NuGet 套件。 ASP.NET Fall 2012 Update 包含新專案範本中的已修正的 DisplayModes NuGet 套件。 請參閱 ASP.NET MVC 4 行動快取錯誤修正以了解修正詳細資訊。

jQuery Mobile 和行動功能

如需使用 jQuery Mobile 並搭配 ASP.NET MVC 4 建置行動應用程式的詳細資訊,請參閱 ASP.NET MVC 4 Mobile 功能

非同步控制器的工作支援

您現在可以將非同步動作方法撰寫為單一方法,並用來傳回 TaskTask<ActionResult> 類型的物件。

如需詳細資訊,請參閱 在 ASP.NET MVC 4 中使用非同步方法

Azure SDK

ASP.NET MVC 4 支援 Windows Azure SDK 的 1.6 版和更新版本。

資料庫移轉

ASP.NET MVC 4 專案現在包含 Entity Framework 5。 Entity Framework 5 中的一項絕佳功能是支援資料庫移轉。 這項功能可讓您進行程式碼類型的移轉,輕鬆地發展資料庫架構,同時保留資料庫中的資料。 如需資料庫移轉的詳細資訊,請參閱ASP.NET MVC 4 簡介教學課程中的將新欄位新增至電影模型和資料表

空白專案範本

MVC 空白專案範本現在確實是空白,因此您可以從完全乾淨的空間開始著手。 舊版的空白專案範本已重新命名為 Basic。

新增控制器至任何專案資料夾

您現在可以在 MVC 專案中的任何資料夾中按一下滑鼠右鍵,然後選取新增控制器。 這可讓您更彈性地隨自己喜好組織整理您的控制器,包括將您的 MVC 和 Web API 控制器保留在不同的資料夾中。

統合和縮製

統合和縮制架構可讓您減少網頁所需的 HTTP 要求數目,方法是將個別檔案結合成指令碼和 CSS 的單一組合檔案。 然後,其可藉由縮小套件組合的內容來減少這些要求的整體大小。 縮制可能包含多種活動,例如消除空白字元以縮短變數名稱,甚至根據其語意摺疊 CSS 選擇器。 套件組合會在程式碼中進行宣告和設定,而且可透過協助常式,輕鬆地在檢視中進行參考,這些方法可以產生套件組合的單一連結,或在偵錯時,製作套件組合中個別內容的多個連結。 如需詳細資訊,請參閱統合和縮製

啟用使用 OAuth 和 OpenID 從 Facebook 和其他網站登入

ASP.NET MVC 4 網際網路專案範本中的預設範本現在包含使用 DotNetOpenAuth 程式庫的 OAuth 和 OpenID 登入支援。 如需設定 OAuth 或 OpenID 提供者的詳細資訊,請參閱 WebForms、MVC 和 WebPages的 OAuth/OpenID 支援,以及 ASP.NET 網頁中的 OAuth/OpenID

將 ASP.NET MVC 3 專案升級至 ASP.NET MVC 4

ASP.NET MVC 4 可以與同一部電腦上的 ASP.NET MVC 3 並存安裝,這可讓您彈性地選擇何時將 ASP.NET MVC 3 應用程式升級至 ASP.NET MVC 4。

最簡單的升級方式是建立新的 ASP.NET MVC 4 專案,並將現有MVC 3 專案的所有檢視、控制器、程式碼和內容檔案複製到新專案,然後更新該新建專案中的組件參考,以符合任何非 MVC 範本,包括您所使用的組件。 如果您已變更 MVC 3 專案中的 Web.config 檔案,您也必須將這些變更合併至 MVC 4 專案中的 Web.config 檔案。

若要手動將現有的 ASP.NET MVC 3 應用程式升級至第 4 版,請執行下列動作:

  1. 在專案的所有 Web.config 檔案中 (專案根目錄中有一個,一個位於 Views 資料夾,另一個位於您專案中每個區域的 Views 資料夾中),取代下列文字的每個執行個體 (注意:使用 Visual Studio 2012 建立的專案中找不到 System.Web.WebPages 版本=1.0.0.0):

    System.Web.Mvc, Version=3.0.0.0
    System.Web.WebPages, Version=1.0.0.0
    System.Web.Helpers, Version=1.0.0.0
    System.Web.WebPages.Razor, Version=1.0.0.0
    

    下列對應文字:

    System.Web.Mvc, Version=4.0.0.0
    System.Web.WebPages, Version=2.0.0.0
    System.Web.Helpers, Version=2.0.0.0
    System.Web.WebPages.Razor, Version=2.0.0.0
    
  2. 在根位置 Web.config 檔案中,將 webPages:Version 元素更新為「2.0.0.0」,並新增值為「true」的新 PreserveLoginUrl 金鑰:

    <appSettings>
      <add key="webpages:Version" value="2.0.0.0" />
      <add key="PreserveLoginUrl" value="true" />
    </appSettings>
    
  3. 在 [方案總管] 中,於您的參考上按一下滑鼠右鍵,然後選取 [管理 NuGet 套件]。 在左窗格中,選取線上\NuGet 官方套件來源,然後更新下列內容:

    • ASP.NET MVC 4
    • (選擇性) jQuery、jQuery 驗證和 jQuery UI
    • (選擇性) Entity Framework
    • (選擇性) Modernizr
  4. 在 [方案總管] 中,以滑鼠右鍵按一下專案名稱,然後選取 [卸載專案]。 然後再次以滑鼠右鍵按一下名稱,並選取編輯 ProjectName.csproj。

  5. 找出 ProjectTypeGuids 元素,並將 {E53F8FEA-EAE0-44A6-8774-FFD645390401} 取代成 {E3E379DF-F4C6-4180-9B81-6769533ABE47}。

  6. 儲存變更,關閉您正在編輯的專案 (.csproj) 檔案,以滑鼠右鍵按一下專案,然後選取 [重新載入專案]。

  7. 如果專案參考的任何第三方程式庫使用舊版的 ASP.NET MVC,請開啟根 Web.config 檔案,並在組態區段中新增下列三個 bindingRedirect 元素:

    <configuration>
      <!--... elements deleted for clarity ...-->
     
      <runtime>
        <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
          <dependentAssembly>
            <assemblyIdentity name="System.Web.Helpers" 
                 publicKeyToken="31bf3856ad364e35" />
            <bindingRedirect oldVersion="1.0.0.0" newVersion="2.0.0.0"/>
          </dependentAssembly>
          <dependentAssembly>
            <assemblyIdentity name="System.Web.Mvc" 
                 publicKeyToken="31bf3856ad364e35" />
            <bindingRedirect oldVersion="1.0.0.0-3.0.0.0" newVersion="4.0.0.0"/>
          </dependentAssembly>
          <dependentAssembly>
            <assemblyIdentity name="System.Web.WebPages" 
                 publicKeyToken="31bf3856ad364e35" />
            <bindingRedirect oldVersion="1.0.0.0" newVersion="2.0.0.0"/>
          </dependentAssembly>
        </assemblyBinding>
      </runtime>
    </configuration>
    

ASP.NET MVC 4 候選版的變更

您可以在這裡找到 ASP.NET MVC 4 候選版的版本資訊:

此版本中 ASP.NET MVC 4 候選版的重大變更摘要如下:

  • 每個控制器組態:ASP.NET Web API 控制器可以使用實作 IControllerConfiguration 的自訂屬性來設定自己的格式器、動作選擇器和參數繫結器。 已移除 HttpControllerConfigurationAttribute
  • 每個路由訊息處理常式:您現在可以在指定路由的要求鏈結中指定最終訊息處理常式。 這可支援隨行架構,並使用路由來自行分派 (非 IHttpController) 端點。
  • 進度通知:ProgressMessageHandler 會針對上傳的要求實體和正在下載的回應實體產生進度通知。 您可以使用此處理常式,追蹤您上傳要求本文或下載回應本文的距離。
  • 推送內容:PushStreamContent 類別會造成讓資料製造者想要使用串流直接寫入要求或回應的情境 (以同步或非同步方式寫入)。 當 PushStreamContent 準備好接受資料時,它會使用輸出串流來呼叫動作委派。 這樣一來,開發人員可以視需要寫入串流,並在寫入完成時關閉串流。 PushStreamContent 會偵測串流的結尾,並完成基礎非同步 Task 來寫出內容。
  • 建立錯誤回應: 使用 HttpError 類型來一致表示導致錯誤資訊發生原因,例如驗證錯誤和例外狀況,同時仍接受 IncludeErrorDetailPolicy。 使用新的 CreateErrorResponse 擴充方法,輕鬆地使用 HttpError 作為內容建立錯誤回應。 HttpError 內容完全由內容進行交涉。
  • 已移除 MediaRangeMapping:媒體類型範圍現在由預設內容交涉器處理。
  • 簡單類型參數的預設參數繫結現在是 [FromUri]:在舊版的 ASP.NET Web API 中,使用模型繫結之簡單類型參數的預設參數繫結。 簡單類型參數的預設參數繫結現在是 [FromUri]
  • 動作選取會接受必要的參數:在 ASP.NET Web API 中的動作選取現在只會在提供來自 URI 的所有必要參數時選取動作。 您可以藉由在動作方法簽章中提供引數的預設值,以選擇性方式指定參數。
  • 自訂 HTTP 參數繫結:使用 ParameterBindingAttribute 自訂特定動作參數的參數繫結,或使用 HttpConfiguration 上的 ParameterBindingRules 更廣泛地自定義參數繫結。
  • MediaTypeFormatter 改進功能: Formatter 現在可以存取完整的 HttpContent 執行個體。
  • 主機緩衝原則選取: 在 ASP.NET Web API 中實作並設定 IHostBufferPolicySelector 服務,讓主機能夠在使用緩衝時判斷的原則。
  • 以主機無關的方式存取用戶端憑證: 使用 GetClientCertificate 擴充方法,從要求訊息取得提供的用戶端憑證。
  • 內容交涉擴充性: 自訂衍生自 DefaultContentNegotiator 的內容交涉,並覆寫您想要的任何內容交涉層面。
  • 支援傳回 406 不可接受的回應:當找不到適當的格式器時,您現在可以在 ASP.NET web API 中傳回 406 個無法接受的回應,方法是建立 DefaultContentNegotiator,並將 excludeMatchOnTypeOnly 參數設定為 true
  • 將表單資料讀取為 NameValueCollection 或 JToken:您可以使用 ParseQueryStringReadAsFormDataAsync 擴充方法,分別在 URI 查詢字串或要求本文中讀取表單資料做為 NameValueCollection。 同樣地,您可以使用 TryReadQueryAsJsonReadAsAsync<T> 擴充方法,分別讀取 URI 查詢字串或要求本文中的表單資料做為 JToken
  • 多部分改進: 現在您可以撰寫一個 MultipartStreamProvider,完全針對 MIME 多部分資料類型進行完整量身打造,以便以最佳方式向使用者讀取和呈現結果。 您也可以在 MultipartStreamProvider 上攔截後續處理步驟,這樣無論您要在 MIME 多部分主體元件上執行任何後續處理,都能進行實作。 例如,MultipartFormDataStreamProvider 實作會讀取 HTML 表單資料部分,並將其新增至 NameValueCollection,叫用者就能輕鬆取得。
  • 連結產生改進:UrlHelper 不再相依於 HttpControllerContext。 您現在可以從提供 HttpRequestMessage 的內容存取 UrlHelper
  • 訊息處理常式執行順序變更: 訊息處理常式現在會依設定的順序執行,而不是以反向順序執行。
  • 連接訊息處理常式的協助程式:可連接 DelegatingHandlers 的新增 HttpClientFactory,並建立 HttpClient 並備妥所需的管線可供使用。 它也提供連接替代內部處理常式的功能 (預設值為 HttpClientHandler),以及在使用 HttpMessageInvoker 或其他 DelegatingHandler進行連接, 而不是在 HttpClient 做為最上層叫用者時連接。
  • ASP.NET Web 最佳化中的 CDN 支援: ASP.NET Web 最佳化現在支援 CDN 替代路徑,讓您為每個套件指定指向內容傳遞網路上相同資源的額外 URL。 支援 CDN 可讓您的指令碼本和樣式組合在地理位置上更接近 Web 應用程式的最終取用者。 當 CDN 無法使用時,生產應用程式應該執行回退。 測試回退。
  • ASP.NET Web API 路由和組態移至可在測試程式碼中重複使用的 WebApiConfig.Register 靜態方法。 先前 ASP.NET Web API 已新增至 RouteConfig.RegisterRoutes 以及標準 MVC 路由中。 預設 ASP.NET Web API 路由和組態現在會以個別 WebApiConfig.Register 方法來輔助測試。

已知問題和重大變更

  • 當應該傳回行動檢視時,RC 和 RTM 版本的 ASP.NET MVC 4 未正確傳回快取的桌面檢視。

  • Razor 檢視引擎的重大變更。 下列類型已從 System.Web.Mvc.Razor 中移除:

    • ModelSpan
    • MvcVBRazorCodeGenerator
    • MvcCSharpRazorCodeGenerator
    • MvcVBRazorCodeParser

    下列方法也已移除:

    • MvcCSharpRazorCodeParser.ParseInheritsStatement(System.Web.Razor.Parser.CodeBlockInfo)
    • MvcWebPageRazorHost.DecorateCodeGenerator(System.Web.Razor.Generator.RazorCodeGenerator)
    • MvcVBRazorCodeParser.ParseInheritsStatement(System.Web.Razor.Parser.CodeBlockInfo)
  • 當 WebMatrix.WebData.dll 包括在 ASP.NET MVC 4 應用程式的 /bin 目錄中,它會接管表單驗證的 URL。 使用 [新增可部署的相依性] 對話方塊時,將 WebMatrix.WebData.dll 組件新增至您的應用程式 (例如,選取 [使用 Razor 語法的 ASP.NET 網頁] 將會覆寫驗證登入重新導向至 /account/logon,而不是預設 ASP.NET MVC 帳戶控制器所預期的 /account/login。 若要防止此行為,並使用已在 web.config 驗證區段中指定的 URL,您可以新增名為 PreserveLoginUrl 的 appSetting,並將其設定為 true:

    <appSettings>
        <add key="PreserveLoginUrl" value="true"/>
    </appSettings>
    
  • 嘗試安裝 ASP.NET MVC 4 用於並存安裝 Visual Studio 2010 和 Visual Web Developer 2010 時,NuGet 套件管理員無法安裝。 若要與 ASP.NET MVC 4 並存執行 Visual Studio 2010 和 Visual Web Developer 2010,您必須在已安裝這兩個版本的 Visual Studio 之後安裝 ASP.NET MVC 4。

  • 如果已解除安裝必要條件,則解除安裝 ASP.NET MVC 4 會失敗。 若要完全解除安裝 ASP.NET MVC 4,您必須先解除安裝 ASP.NET MVC 4,才能解除安裝 Visual Studio。

  • 安裝 ASP.NET MVC 4 中斷 ASP.NET MVC 3 RTM 應用程式。 使用 RTM 版本建立的 ASP.NET MVC 3 應用程式 (而非使用 ASP.NET MVC 3 工具更新版本) 需要下列變更,才能與 ASP.NET MVC 4 並行運作。 在沒有進行這些更新的情況下建置專案,將會導致編譯錯誤。

    必要的更新

    1. 在根 Web.config 檔案中,新增金鑰 webPages:Version、值 1.0.0.0<appSettings> 輸入項。

      <appSettings>
          <add key="webpages:Version" value="1.0.0.0"/>
          <add key="ClientValidationEnabled" value="true"/>
          <add key="UnobtrusiveJavaScriptEnabled" value="true"/>
      </appSettings>
      
    2. 在 [方案總管] 中,以滑鼠右鍵按一下專案名稱,然後選取 [卸載專案]。 然後再次以滑鼠右鍵按一下名稱,並選取編輯 ProjectName.csproj。

    3. 找出下列組件參考:

      <Reference Include="System.Web.WebPages"/> 
      <Reference Include="System.Web.Helpers" />
      

      將其取代成下列文字:

      <Reference Include="System.Web.WebPages, Version=1.0.0.0,
      Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL "/> 
      <Reference Include="System.Web.Helpers, Version=1.0.0.0,
      Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL" />
      
    4. 儲存變更,關閉您正在編輯的專案 (.csproj) 檔案,再以滑鼠右鍵按一下專案,然後選取 [重新載入]。

  • 將 ASP.NET MVC 4 專案從目標 4.5 變更為 4.0 並不會更新 EntityFramework 組件參考:如果您在設定目標 4.5 之後將 ASP.NET MVC 4 專案變更為目標 4.0,則 EntityFramework 組件的參考仍會指向 4.5 版。 若要修正此問題,請解除安裝並重新安裝 EntityFramework NuGet 套件。

  • 403 禁止:在 Azure 上執行 ASP.NET MVC 4 應用程式時,目標從 4.5 變更為 4.0 時:如果您在設定目標 4.5 之後將 ASP.NET MVC 4 專案變更為目標 4.0,然後部署到 Azure,您可能會在執行階段收到 403 禁止錯誤。 若要解決此問題,請將下列內容新增至您的 web.config: <modules runAllManagedModulesForAllRequests="true" />

  • 當您在 Razor 檔案中的字串常值中輸入 '' 時,Visual Studio 2012 會當機。 若要解決此問題,請先輸入字串常值的結尾引號。

  • 在網際網路範本中瀏覽至「帳戶/管理」會導致CHS、TRK 和 CHT 語言發生執行階段錯誤。 若要修正此問題,請將頁面設定為<強式>標記中的唯一內容,分隔 @User.Identity.Name

  • Azure 網站不支援 Google 和 LinkedIn 提供者。 部署至 Azure 網站時,請使用替代驗證提供者。

  • 搭配 IIS 8 Express/IIS 使用 UriPathExtensionMapping 時,當您嘗試使用擴充功能時,會收到「404 找不到」錯誤。 靜態檔案處理常式會干擾使用 UriPathExtensionMappings 的 Web API 要求。 在 web.config 中,設定 runAllManagedModulesForAllRequests=true 以解決此問題。

  • Controller.Execute 方法不再提供呼叫。 所有 MVC 控制器現在一律以非同步方式執行。