Introduction
This article will introduce you to enhancing MVC 4 and Web API projects based Web Application to MVC 5 and Web API 2. As you already know, MVC 5 and Web API 2 have many new features like attribute routing, authentication filters and so on. I am giving you a brief description to upgrade the application to the most recent version.
So, let's proceed with the following sections:
- Working with MVC 4 Project
- Working with Visual Studio 2013
- Removing the MVC 4 Project GUID
Working with MVC 4 Project
Step 1: Please create a backup of your project. There are many changes made in the application with this walkthrough.
Step 2: If you want to upgrade the Web API to Web API 2, then open the Global.asax file and replace the following code:
WebApiConfig.Register(GlobalConfiguration.Configuration);
with the code below:
GlobalConfiguration.Configure(WebApiConfig.Register);
Step 3: You need to be sure that the packages that you are using are suitable with MVC 5 and Web API 2. I am presenting the following table that shows that the MVC 4 and Web API related packages than need to be changed. A few of the packages with their old version and new version are below:
Package Id |
Old Version |
New Version |
Microsoft.AspNet.Razor |
2.0.x.x |
3.0.0 |
Microsoft.AspNet.WebPages |
2.0.x.x |
3.0.0 |
Microsoft.AspNet.WebPages.OAuth |
2.0.x.x |
3.0.0 |
Microsoft.AspNet.Mvc |
4.0.x.x |
5.0.0 |
Microsoft.AspNet.Mvc.Facebook |
4.0.x.x |
5.0.0 |
Microsoft.AspNet.WebApi.Core |
4.0.x.x |
5.0.0 |
Microsoft.AspNet.WebApi |
4.0.x.x |
5.0.0 |
Microsoft.AspNet.Mvc.FixedDisplayModes |
|
Removed |
Microsoft.AspNet.WebPages.Administration |
|
Removed |
Note: MVC 5 is only compatible with Razor 3.
Working with Visual Studio 2013
Now we'll work with the Visual Studio 2013 (RTM Version). Please use the following procedure.
Step 1: Click on "Open Project" and select the existing MVC 4 application.
Step 2: Open the Package Manager Console.
Step 3: You remove the following NuGet Packages from the application. Your project might not include all of these.
- Microsoft.AspNet.WebPages.Administration
This package is added, when upgrading from MVC 3 to MVC 4. To remove it enter the following command:
Uninstall-Package -Id Microsoft.AspNet.WebPages.Administration
- Microsoft-Web-Helpers
This package is replaced with Microsoft.AspNet.WebHelpers. To remove it enter the following command:
Uninstall-Package -Id Microsoft-Web-Helpers
- Microsoft.AspNet.Mvc.FixedDisplayModes
This package is used for working around a bug in MVC 4 that is fixed in MVC 5. To remove it enter the following command:
Uninstal-Package -Id Microsoft.AspNet.Mvc.FixedDisplayModes
Step 4: Now you update all current packages in your application. Enter the following command in the Package Manager Console (PMC):
Update-Package
Note: You can update the package by giving the specific package name using the ID argument.
Updating the application Web.Config File
Now we'll make some changes in the Web.Config file of the application. So, proceed with the following procedure.
Step 1: Open the Web.Config file present in the root folder.
Step 2: Please change the old version to the new version of elements. So please update the code as shown below with the highlighted code:
<runtime>
<assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
<dependentAssembly>
<assemblyIdentity name="DotNetOpenAuth.Core" publicKeyToken="2780ccd10d57b246" />
<bindingRedirect oldVersion="0.0.0.0-4.3.0.0" newVersion="4.3.0.0" />
</dependentAssembly>
<dependentAssembly>
<assemblyIdentity name="DotNetOpenAuth.AspNet" publicKeyToken="2780ccd10d57b246" />
<bindingRedirect oldVersion="0.0.0.0-4.3.0.0" newVersion="4.3.0.0" />
</dependentAssembly>
<dependentAssembly>
<assemblyIdentity name="System.Web.Helpers" 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.0.0.0" newVersion="5.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>
Step 3: Update the AppSettings as shown below with the highlighted code:
<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>
Step 4: Remove any trust levels other than "Full". As an example:
<securityPolicy>
<!--<trustLevel name="Medium" policyFile="web_mediumtrust.config"/>-->
</securityPolicy>
Updating the Web.Config File in Views
Now we'll make some changes in the Web.Config file that exists in the Views Folder. So, proceed with the following procedure.
Step 1: Open the Web.Config file present in the Views folder
Step 2: Please change the old version to the new version of elements that contains System.Web.Mvc. So please update the code as shown below with the highlighted code:
<system.web.webPages.razor>
<host factoryType="System.Web.Mvc.MvcWebRazorHostFactory, System.Web.Mvc, Version=5.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" />
<pages pageBaseType="System.Web.Mvc.WebViewPage">
<namespaces>
and
<pages
validateRequest="false"
pageParserFilterType="System.Web.Mvc.ViewTypeParserFilter, System.Web.Mvc, Version=5.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"
pageBaseType="System.Web.Mvc.ViewPage, System.Web.Mvc, Version=5.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"
userControlBaseType="System.Web.Mvc.ViewUserControl, System.Web.Mvc, Version=5.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35">
<controls>
<add assembly="System.Web.Mvc, Version=5.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" namespace="System.Web.Mvc"tagPrefix="mvc" />
</controls>
Step 3: Please change the old version to the new version of elements that contains System.Web.WebPages.Razor. So please update the code as shown below with the highlighted code:
<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>
Step 4: Install the following NuGet Package, if you removed it:
Install-Package -Id Microsoft.AspNet.WebHelpers
Removing the MVC 4 Project GUID
Please build your solution.
Now to remove the MVC 4 Project GUID, use the following procedure.
Step 1: Just right-click on your project and select "Unload Project by Solution Explorer".
Step 2: Now, right-click to select "Edit ProjectName.csproj"
Step 3: Find the ProjectTypeGuids element and remove the MVC 4 project GUID as shown below with the highlighted text:
<ProjectTypeGuids>{E3E379DF-F4C6-4180-9B81-6769533ABE47};{349c5851-65df-11da-9384-00065b846f21};{fae04ec0-301f-11d3-bf4b-00c04f79efbc}</ProjectTypeGuids>
Remove the highlighted text in the element.
Step 4: Please save it and close the opened file.
Step 5: Finaly right-click on the project to select "Reload Project".
Summary
This article introduced you to upgrade the MVC 4 and Web API project based Web application to the latest version, in other words MVC 5 and Web API 2. You can also learn to upgrade the existing application to the latest version.Thanks for reading.