[A] System.Web.WebPages.Razor.Configuration.HostSection no se puede enviar a ... problema de web.config

158

Estoy teniendo el siguiente error:

[A] System.Web.WebPages.Razor.Configuration.HostSection no se puede convertir a [B] System.Web.WebPages.Razor.Configuration.HostSection. El tipo A se origina en 'System.Web.WebPages.Razor, Version = 2.0.0.0, Culture = neutral, PublicKeyToken = 31bf3856ad364e35' en el contexto 'Default' en la ubicación 'C: \ WINDOWS \ Microsoft.Net \ assembly \ GAC_MSIL \ System .Web.WebPages.Razor \ v4.0_2.0.0.0__31bf3856ad364e35 \ System.Web.WebPages.Razor.dll '. El tipo B se origina en 'System.Web.WebPages.Razor, Version = 3.0.0.0, Culture = neutral, PublicKeyToken = 31bf3856ad364e35' en el contexto 'Default' en la ubicación 'C: \ Users \ MyName \ AppData \ Local \ Temp \ Temporary Archivos ASP.NET \ root \ 63e7ff36 \ a1cb775d \ assembly \ dl3 \ 8f568c18 \ 9b7ddacf_d04dcf01 \ System.Web.WebPages.Razor.dll '.

He buscado problemas similares en stackoverflow y he usado sus soluciones, pero no parece solucionar el problema que estoy experimentando.

Ocurrió de repente, simplemente presioné una solución limpia y apareció este error. También comencé a usar nuget package restore en la solución. También actualicé mis paquetes (usando Update-package) para que uno de ellos tenga algo que ver con este problema.

Maxim Geerinck
fuente

Respuestas:

274

Estoy usando VS2013, MVC 5.2.2.0, Web Api 2. Acabo de cambiar todas las versiones de 2.0.0.0 a 3.0.0.0 de la siguiente sección de Web.config que se encuentra dentro de la carpeta Ver de mi proyecto.

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

Y el problema se resuelve. BINGO !!

Kuntal Ghosh
fuente
77
Esto hizo el trabajo por mí. ¡Gracias!
Joseph Woodward
1
Esto lo resolvió para mí. Estoy convirtiendo una aplicación de formularios web a MVC5.
Ray
1
@guneysus, ¿cómo harías el equivalente de la respuesta de Kuntal sin edición manual?
twm
@twm Generalmente Update-Packageedita tambiénweb.config
guneysus 01 de
¡Por eso me ENCANTA TANTO!
Homunculus Reticulli
102

Solo agrego mis dos centavos a este problema.

Descubrí que la causa de este error para mí era que las carpetas Vistas web.config estaban haciendo referencia System.Web.WebPages.Razor, Version=2.0.0.0cuando todo lo demás estaba usando3.0.0.0

Parece que la actualización del paquete nuget no tuvo en cuenta esta carpeta de alguna manera.

Niclas Lindqvist
fuente
1
es más preciso! web.config en la carpeta de vistas.
Rohit Verma
58

La causa de este error es web.config en la carpeta Vistas que hace referencia a System.Web.WebPages.Razor, Versión = 2.0.0.0 en lugar de 3.0.0.0.

Por lo general, esto puede suceder después de una actualización de paquete nuget, que no tiene en cuenta esta carpeta.

Actualiza el Views\Web.configarchivo:

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

para obtener más información sobre la actualización a MVC 5 http://www.asp.net/mvc/tutorials/mvc-5/how-to-upgrade-an-aspnet-mvc-4-and-web-api-project-to- aspnet-mvc-5-and-web-api-2

Maxim Geerinck
fuente
55
no me parece una solución, más bien me funciona. algunos proyectos pueden depender solo de
mvc4
12
En particular, parece que la solución para este error se encuentra en la sección "Actualizar los archivos web.config en la carpeta Vistas". Parece que la actualización de MVC4 -> MVC5 con NuGet no actualiza automáticamente los números de versión en Views / Web.config.
Tyler
Gracias por el enlace! Hubiera sido bueno si la actualización de NuGet al menos hubiera mostrado un enlace a esa página ...
Jedidja
Seguí la guía y ahora no puedo correr mi sitio en modo de depuración - me dice "... Proyecto con el tipo de salida de la biblioteca de clases no se puede iniciar ..."
Matt
2
Funcionó para mí, mi problema principal se debió a que no había actualizado las versiones en web.config en la subcarpeta Vistas.
conectadosoftware
13

Probé todos los métodos anteriores, y el problema aún no se resolvió hasta que inserté las siguientes líneas en web.config directamente en la carpeta del proyecto.

  <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>
Jian Huang
fuente
3

Si obtiene esto con el Depurador de ruta, entonces necesita actualizar web.config en la carpeta Vistas en el Área para el Depurador de ruta.

Luke Puplett
fuente
Salvador de la vida. Gracias.
6footunder
¿Puedes aclarar eso por favor?
Si8
1

En mi caso, lo resolví también actualizando Web.config en el servidor en vivo que VS actualizó al actualizar a MVC 5

rajeemcariazo
fuente