Sitecore 7.2 MVC with MVC 5

The problem:

Make the MVC 5.2 code working on Sitecore .NET 7.2 (rev. 140526) using VS 2013 Update 3

Steps to reproduce issue/problem
1. Setup Sitecore.NET 7.2 (rev. 140526) with default MVC configuration, As MVC is default enabled as mentioned in document from Sitecore at http://sdn.sitecore.net/upload/sitecore7/72/installation_guide_sc72-a4.pdf,

2. Create new View in VS 2013 Update 3, With default “ASP.Net Web Application” project template.

3. Configure publishing to do the deployment to local file system.

4. publish Project to Web Directory

5. it will produce following error



Server Error in '/' Application.
Could not load file or assembly 'System.Web.Mvc, Version=5.1.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35' or one of its dependencies. The located assembly's manifest definition does not match the assembly reference. (Exception from HRESULT: 0x80131040)
Description: An unhandled exception occurred during the execution of the current web request. Please review the stack trace for more information about the error and where it originated in the code.

Exception Details: System.IO.FileLoadException: Could not load file or assembly 'System.Web.Mvc, Version=5.1.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35' or one of its dependencies. The located assembly's manifest definition does not match the assembly reference. (Exception from HRESULT: 0x80131040)

Source Error:

An unhandled exception was generated during the execution of the current web request. Information regarding the origin and location of the exception can be identified using the exception stack trace below.

Assembly Load Trace: The following information can be helpful to determine why the assembly 'System.Web.Mvc, Version=5.1.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35' could not be loaded.

WRN: Assembly binding logging is turned OFF.
To enable assembly bind failure logging, set the registry value [HKLM\Software\Microsoft\Fusion!EnableLog] (DWORD) to 1.
Note: There is some performance penalty associated with assembly bind failure logging.
To turn this feature off, remove the registry value [HKLM\Software\Microsoft\Fusion!EnableLog].

Stack Trace:

[FileLoadException: Could not load file or assembly 'System.Web.Mvc, Version=5.1.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35' or one of its dependencies. The located assembly's manifest definition does not match the assembly reference. (Exception from HRESULT: 0x80131040)]
Sitecore.Mvc.Pipelines.Loader.InitializeGlobalFilters.AddGlobalFilters(PipelineArgs args) +0
(Object , Object[] ) +83
Sitecore.Pipelines.CorePipeline.Run(PipelineArgs args) +365
Sitecore.Nexus.Web.HttpModule.Application_Start() +172
Sitecore.Nexus.Web.HttpModule.Init(HttpApplication app) +516
System.Web.HttpApplication.RegisterEventSubscriptionsWithIIS(IntPtr appContext, HttpContext context, MethodInfo[] handlers) +530
System.Web.HttpApplication.InitSpecial(HttpApplicationState state, MethodInfo[] handlers, IntPtr appContext, HttpContext context) +304
System.Web.HttpApplicationFactory.GetSpecialApplicationInstance(IntPtr appContext, HttpContext context) +404
System.Web.Hosting.PipelineRuntime.InitializeApplication(IntPtr appContext) +475

[HttpException (0x80004005): Could not load file or assembly 'System.Web.Mvc, Version=5.1.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35' or one of its dependencies. The located assembly's manifest definition does not match the assembly reference. (Exception from HRESULT: 0x80131040)]
System.Web.HttpRuntime.FirstRequestInit(HttpContext context) +12601936
System.Web.HttpRuntime.EnsureFirstRequestInit(HttpContext context) +159
System.Web.HttpRuntime.ProcessRequestNotificationPrivate(IIS7WorkerRequest wr, HttpContext context) +12441597

Version Information: Microsoft .NET Framework Version:4.0.30319; ASP.NET Version:4.0.30319.34009


Solution :

1. Open the Web.config
2. Navigate to the “configuration\runtime\assemblyBinding\dependentAssembly” and search for below given configuration lines

<dependentAssembly>
    <assemblyIdentity name="System.Web.Mvc" publicKeyToken="31bf3856ad364e35" xmlns="urn:schemas-microsoft-com:asm.v1" />
    <bindingRedirect oldVersion="1.0.0.0-5.2.0.0" newVersion="5.2.0.0" xmlns="urn:schemas-microsoft-com:asm.v1" />
</dependentAssembly>

3. Replace the olderVersion value to “1.0.0.0-5.2.0.0” (this does the trick)

4. change the version of the new assembly i.e. newVersion value to “5.2.0.0”

As a good practice you may also need to update assembly version number at “system.web\compilation\assemblies” for the System.Web.Mvc

Advertisement

2 thoughts on “Sitecore 7.2 MVC with MVC 5

    • HI Sumit Bajaj,
      Apologies for the late reply. I hope your issue might have been fixed by now. If not, can you please send me more details? Like which Sitecore version you are using, what version of .net Framework and version of System.Wen.MVC.dll in your local site’s bin directory ?

      This will help me to understand your issue better and help you better.

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

Connecting to %s

This site uses Akismet to reduce spam. Learn how your comment data is processed.