Site stopped working in asp.net System.Web.WebPages.Razor.Configuration.HostSection cannot be cast to

asp.net Mvcasp.net Mvc-4C# 5.0

asp.net Mvc Problem Overview


I have a problem like this on server

> [A]System.Web.WebPages.Razor.Configuration.HostSection cannot be cast > to [B]System.Web.WebPages.Razor.Configuration.HostSection. Type A > originates from 'System.Web.WebPages.Razor, Version=2.0.0.0, > Culture=neutral, PublicKeyToken=31bf3856ad364e35' in the context > 'Default' at location > 'C:\Windows\Microsoft.Net\assembly\GAC_MSIL\System.Web.WebPages.Razor\v4.0_2.0.0.0__31bf3856ad364e35\System.Web.WebPages.Razor.dll'. > Type B originates from 'System.Web.WebPages.Razor, Version=1.0.0.0, > Culture=neutral, PublicKeyToken=31bf3856ad364e35' in the context > 'Default' at location > 'C:\Windows\Microsoft.Net\assembly\GAC_MSIL\System.Web.WebPages.Razor\v4.0_1.0.0.0__31bf3856ad364e35\System.Web.WebPages.Razor.dll'.

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.InvalidCastException: > [A]System.Web.WebPages.Razor.Configuration.HostSection cannot be cast > to [B]System.Web.WebPages.Razor.Configuration.HostSection. Type A > originates from 'System.Web.WebPages.Razor, Version=2.0.0.0, > Culture=neutral, PublicKeyToken=31bf3856ad364e35' in the context > 'Default' at location > 'C:\Windows\Microsoft.Net\assembly\GAC_MSIL\System.Web.WebPages.Razor\v4.0_2.0.0.0__31bf3856ad364e35\System.Web.WebPages.Razor.dll'. > Type B originates from 'System.Web.WebPages.Razor, Version=1.0.0.0, > Culture=neutral, PublicKeyToken=31bf3856ad364e35' in the context > 'Default' at location > 'C:\Windows\Microsoft.Net\assembly\GAC_MSIL\System.Web.WebPages.Razor\v4.0_1.0.0.0__31bf3856ad364e35\System.Web.WebPages.Razor.dll'.

Source Error:

I have installed MVC 3 on serer and on my computer. I have tried with replacing it with 15 days old codebase but the same problem exist.

now I want to solve it. Do someone know how I can fix it.

asp.net Mvc Solutions


Solution 1 - asp.net Mvc

In the root Web.config make sure assemblyBinding contains the proper version for the assembly "System.Web.WebPages.Razor" and "System.Web.Mvc". Check for their actual existence as well as my "System.Web.WebPages.Razor" assembly tag was missing causing the error. I had my assembly versions set to 3.0 and 5.0 respectively in the time of this writing with full NuGet updates. Code should look something like below. The publicKeyToken will stay the same between the versions. Cheers!

<assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
  <!--some more bidings-->
  <dependentAssembly>
        <assemblyIdentity name="System.Web.WebPages.Razor"
            publicKeyToken="31bf3856ad364e35" />
        <bindingRedirect oldVersion="1.0.0.0-3.0.0.0" newVersion="3.0.0.0"/>
  </dependentAssembly>

  <dependentAssembly>
    <assemblyIdentity name="System.Web.Mvc" publicKeyToken="31bf3856ad364e35" />
    <bindingRedirect oldVersion="1.0.0.0-5.0.0.0" newVersion="5.0.0.0" />
  </dependentAssembly>
<!--some more bidings-->
</assemblyBinding>

Solution 2 - asp.net Mvc

My case was upgrading from mvc4 to mvc5.

I made sure my references were in sync (with a newly created mvc5 app), updated the web.config file accordingly and it still didn't work. It finally worked when i changed my web.config file (INSIDE THE VIEWS directory) from:

<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">
  <section name="host" type="System.Web.WebPages.Razor.Configuration.HostSection, System.Web.WebPages.Razor, Version=2.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" requirePermission="false" />
  <section name="pages" type="System.Web.WebPages.Razor.Configuration.RazorPagesSection, System.Web.WebPages.Razor, Version=2.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" requirePermission="false" />
</sectionGroup>

To this:

<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>

REMEMBER: stop iis (express or native), clean solution, build and Run.

Solution 3 - asp.net Mvc

Just in case ian's answer wasn't enough (and the assemblies correct, but the casting is still wrong) chances are you didn't update the <configSections> to reflect the new assembly yet. make sure the assembly portion also references version 3.0 of the System.Web.WebPages.Razor library. e.g.

<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>

(Notice that they all reference version=3.0.0 now)

Solution 4 - asp.net Mvc

Ian's solution worked in one project, but for others I need the more complete info in How to Upgrade to MVC 5 and Web API 2

Solution 5 - asp.net Mvc

Problem:

> [A]System.Web.WebPages.Razor.Configuration.HostSection cannot be cast > to [B]System.Web.WebPages.Razor.Configuration.HostSection. Type A > originates from 'System.Web.WebPages.Razor, Version=2.0.0.0, > Culture=neutral, PublicKeyToken=31bf3856ad364e35' in the context > 'Default' at location > 'C:\Windows\Microsoft.Net\assembly\GAC_MSIL\System.Web.WebPages.Razor\v4.0_2.0.0.0__31bf3856ad364e35\System.Web.WebPages.Razor.dll'. > Type B originates from 'System.Web.WebPages.Razor, Version=3.0.0.0, > Culture=neutral, PublicKeyToken=31bf3856ad364e35' in the context > 'Default' at location > 'C:\Windows\Microsoft.NET\Framework64\v4.0.30319\Temporary ASP.NET > Files\rbs.ceds.todomvcdemo\73d0b7c7\46e3986d\assembly\dl3\21020800\101279fc_da94cf01\System.Web.WebPages.Razor.dll'.

Identification:

The error is with the configuration file i.e. web.config of your project.

Here you will find that Razor version is set to 2.0.0.0 where as in your project 2.0.0.0 version is not available.

Solution:

It is simple, just change the version from 2.0.0.0 to 3.0.0.0 and it will do the magic.

> type="System.Web.WebPages.Razor.Configuration.RazorWebSectionGroup, > System.Web.WebPages.Razor, Version=3.0.0.0 type="System.Web.WebPages.Razor.Configuration.RazorPagesSection, > System.Web.WebPages.Razor, Version=3.0.0.0

You don't need to put redirection or so as it will make things complicated.

Solution 6 - asp.net Mvc

This issue is very common when you are developing for MVC 4 and then suddently you install a package which is available in newer version so it breaks entire application.

Only solution to such issue is to upgrade your entire application to newer or install the old package compatible with your application

Solution 7 - asp.net Mvc

I found a problem and solution.

1 I target my code to 4.0 and then upload the code and it's worked. Before it I also update my code to asp.net MVC 4.

now it's work :)

Solution 8 - asp.net Mvc

Open the two dll files location in your system copy one of the dll in your file location to the another
and try to run the project.

Solution 9 - asp.net Mvc

Another way to fix this, without having to update references is this

  <runtime>
    <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
      <dependentAssembly>
        <assemblyIdentity name="System.Web.Mvc" publicKeyToken="31bf3856ad364e35" />
        <bindingRedirect oldVersion="1.0.0.0-5.0.0.0" newVersion="3.0.0.0" />
      </dependentAssembly>
      <dependentAssembly>
        <assemblyIdentity name="System.Web.Pages.Razor" publicKeyToken="31bf3856ad364e35" culture="neutral" />
        <bindingRedirect oldVersion="0.0.0.0-3.2.0.0" newVersion="1.0.0.0" />
      </dependentAssembly>
    </assemblyBinding>
  </runtime>

Attributions

All content for this solution is sourced from the original question on Stackoverflow.

The content on this page is licensed under the Attribution-ShareAlike 4.0 International (CC BY-SA 4.0) license.

Content TypeOriginal AuthorOriginal Content on Stackoverflow
Questionuser2632851View Question on Stackoverflow
Solution 1 - asp.net MvcIan FlynnView Answer on Stackoverflow
Solution 2 - asp.net Mvcuser3141889View Answer on Stackoverflow
Solution 3 - asp.net MvcBrad ChristieView Answer on Stackoverflow
Solution 4 - asp.net MvcKen McView Answer on Stackoverflow
Solution 5 - asp.net MvccodebasedView Answer on Stackoverflow
Solution 6 - asp.net MvcProgrammingNinjaView Answer on Stackoverflow
Solution 7 - asp.net Mvcuser2632851View Answer on Stackoverflow
Solution 8 - asp.net Mvcuser4287068View Answer on Stackoverflow
Solution 9 - asp.net MvcFernando Gonzalez SanchezView Answer on Stackoverflow