HomeDev GuideAPI Reference
Dev GuideAPI ReferenceUser GuideGitHubNuGetDev CommunitySubmit a ticketLog In
GitHubNuGetDev CommunitySubmit a ticket

Upgrade from MVC 4 to 5

This document describes the steps needed to upgrade an existing Optimizely solution from ASP.NET MVC 4 to MVC 5.

Steps to upgrade

Follow the steps below to upgrade your Optimizely project to the latest MVC version.

  1. Upgrade your site to the latest NuGet package for ASP.NET MVC, run "Update-Package Microsoft.AspNet.Mvc" in the Package Manager Console.
  2. Update the application web.config file in your project as follows:
    - Change the System.Web.Mvc version number from "4.0.0.0" to "5.0.0.0". 
    - Change the System.Web.Helpers and System.Web.WebPages version number from "2.0.0.0" to "3.0.0.0" (if not already done). If System.Web.WebPages.Razor exist as a dependent assembly it should also have version "3.0.0.0".
    - Change the webpages:Version in the  section from 2.0.0.0.0 to 3.0.0.0.
    The result should look like:
<assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
            <dependentAssembly>
              <assemblyIdentity name="System.Web.Helpers" publicKeyToken="31bf3856ad364e35" />
              <bindingRedirect oldVersion="1.0.0.0-3.0.0.0" newVersion="3.0.0.0" />
            </dependentAssembly>
            <dependentAssembly>
              <assemblyIdentity name="System.Web.WebPages" publicKeyToken="31bf3856ad364e35" />
              <bindingRedirect oldVersion="0.0.0.0-3.0.0.0" newVersion="3.0.0.0" />
            </dependentAssembly>
            <dependentAssembly>
              <assemblyIdentity name="System.Web.WebPages.Razor" publicKeyToken="31bf3856ad364e35" />
              <bindingRedirect oldVersion="0.0.0.0-3.0.0.0" newVersion="3.0.0.0" />
            </dependentAssembly>
            <dependentAssembly>
              <assemblyIdentity name="System.Web.Mvc" publicKeyToken="31bf3856ad364e35" />
              <bindingRedirect oldVersion="0.0.0.0-5.2.3.0" newVersion="5.2.3.0" />
            </dependentAssembly>
          </assemblyBinding>
        </runtime>
          
          <appSettings>
            <add key="webpages:Version" value="3.0.0.0" />
            <add key="webpages:Enabled" value="false" />
            <add key="PreserveLoginUrl" value="true" />
            <add key="ClientValidationEnabled" value="true" />
            <add key="UnobtrusiveJavaScriptEnabled" value="true" />
          </appSettings>
  1. Update the web.config file in the Views folder as follows:
    - Update elements containing System.Web.Mvc from version "4.0.0.0" to "5.0.0.0".
    - Update elements containing System.Web.WebPages.Razor from version "2.0.0.0" to "3.0.0.0". 
<sectionGroup name="system.web.webPages.razor"
                          type="System.Web.WebPages.Razor.Configuration.RazorWebSectionGroup, System.Web.WebPages.Razor, Version=3.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35">
              <section name="host"
                       type="System.Web.WebPages.Razor.Configuration.HostSection, System.Web.WebPages.Razor, Version=3.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"
                       requirePermission="false" />
              <section name="pages"
                       type="System.Web.WebPages.Razor.Configuration.RazorPagesSection, System.Web.WebPages.Razor, Version=3.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"
                       requirePermission="false" />
            </sectionGroup>
  If this section contains **System.Web.WebPages**, update those elements from version "2.0.0.0" to "3.0.0.0".  
     
<configuration>
          <configSections>
            <sectionGroup name="system.web.webPages.razor" type="System.Web.WebPages.Razor.Configuration.RazorWebSectionGroup, System.Web.WebPages.Razor, Version=3.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35">
              <section name="host" type="System.Web.WebPages.Razor.Configuration.HostSection, System.Web.WebPages.Razor, Version=3.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" requirePermission="false" />
              <section name="pages" type="System.Web.WebPages.Razor.Configuration.RazorPagesSection, System.Web.WebPages.Razor, Version=3.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" requirePermission="false" />
            </sectionGroup>
          </configSections>
  1. If you use Web API 1, run "Install-Package Microsoft.AspNet.WebApi.WebHost" in the Package Manager Console to update your global.asax from:

    WebApiConfig.Register(GlobalConfiguration.Configuration);
    

    to:

    GlobalConfiguration.Configure(WebApiConfig.Register);
    
  2. Build your solution and verify that the site is working.

See also