[A] System.Web.WebPages.Razor.Configuration.HostSection ne peut pas être converti en… problème web.config

158

Je reçois l'erreur suivante:

[A] System.Web.WebPages.Razor.Configuration.HostSection ne peut pas être converti en [B] System.Web.WebPages.Razor.Configuration.HostSection. Le type A provient de 'System.Web.WebPages.Razor, Version = 2.0.0.0, Culture = neutral, PublicKeyToken = 31bf3856ad364e35' dans le contexte 'Default' à l'emplacement 'C: \ WINDOWS \ Microsoft.Net \ assembly \ GAC_MSIL \ System .Web.WebPages.Razor \ v4.0_2.0.0.0__31bf3856ad364e35 \ System.Web.WebPages.Razor.dll '. Le type B provient de 'System.Web.WebPages.Razor, Version = 3.0.0.0, Culture = neutral, PublicKeyToken = 31bf3856ad364e35' dans le contexte 'Default' à l'emplacement 'C: \ Users \ MyName \ AppData \ Local \ Temp \ Temporary Fichiers ASP.NET \ root \ 63e7ff36 \ a1cb775d \ assembly \ dl3 \ 8f568c18 \ 9b7ddacf_d04dcf01 \ System.Web.WebPages.Razor.dll '.

J'ai cherché dans stackoverflow des problèmes similaires et j'ai utilisé leurs solutions, mais cela ne semble pas résoudre le problème que je rencontre.

Cela s'est produit soudainement, j'ai simplement appuyé sur une solution propre et cette erreur est apparue. J'ai également commencé à utiliser la restauration de paquet nuget sur la solution. J'ai également mis à jour mes packages (en utilisant Update-package), donc l'un d'entre eux pourrait avoir quelque chose à voir avec ce problème.

Maxim Geerinck
la source

Réponses:

274

J'utilise VS2013, MVC 5.2.2.0, Web Api 2. Je viens de changer toutes les versions de 2.0.0.0 à 3.0.0.0 de la section suivante de Web.config qui se trouve dans le dossier View de mon projet.

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

Et le problème est résolu. BINGO !!

Kuntal Ghosh
la source
7
Cela a fait le travail pour moi. Merci!
Joseph Woodward
1
Cela a résolu le problème pour moi. Je convertis une application Webforms en MVC5.
Ray
1
@guneysus, comment feriez-vous l'équivalent de la réponse de Kuntal sans édition manuelle?
twm
@twm Modifie Update-Packageégalement généralementweb.config
guneysus
C'est pourquoi j'aime tant!
Homunculus Reticulli du
102

J'ajoute simplement mes deux cents à ce problème.

J'ai trouvé que la cause de cette erreur pour moi était que les dossiers Views web.config faisaient référence System.Web.WebPages.Razor, Version=2.0.0.0lorsque tout le reste était utilisé3.0.0.0

Il semble que la mise à niveau du package nuget ne tient pas compte de ce dossier.

Niclas Lindqvist
la source
1
c'est plus précis! web.config dans le dossier views.
Rohit Verma
58

La cause de cette erreur est le fichier web.config dans le dossier Views référençant System.Web.WebPages.Razor, Version = 2.0.0.0 au lieu de 3.0.0.0.

Cela peut généralement se produire après une mise à niveau du package nuget, qui ne tient pas compte de ce dossier.

Mettez à jour le Views\Web.configfichier:

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

pour plus d'informations sur la mise à niveau vers 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-et-api-web-2

Maxim Geerinck
la source
5
cela ne ressemble pas à une solution plutôt que de travailler autour de moi. certains projets peuvent dépendre uniquement de
mvc4
12
En particulier, il semble que le correctif de cette erreur se trouve dans la section «Mettre à jour les fichiers web.config sous le dossier Views». Il semble que la mise à jour de MVC4 -> MVC5 avec NuGet ne met pas automatiquement à jour les numéros de version dans Views / Web.config.
Tyler
Merci pour le lien! Cela aurait été bien si la mise à jour de NuGet pouvait au moins afficher un lien vers cette page ...
Jedidja
J'ai suivi le guide et maintenant je ne peux pas exécuter mon site en mode débogage - me dit "... Le projet avec le type de sortie de la bibliothèque de classes ne peut pas être démarré ..."
Matt
2
Cela a fonctionné pour moi, mon problème principal était dû au fait que je n'avais pas mis à jour les versions du fichier web.config dans le sous-dossier Views.
connecté
13

J'ai essayé toutes les méthodes ci-dessus et le problème n'était toujours pas résolu jusqu'à ce que j'aie inséré les lignes suivantes dans web.config directement sous le dossier du projet.

  <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
la source
3

Si vous obtenez cela avec le débogueur de route, vous devez mettre à jour le web.config dans le dossier Views sous la zone pour le débogueur de route.

Luke Puplett
la source
Gareautrain. Merci.
6foot sous
Pouvez-vous clarifier cela s'il vous plaît.
Si8
1

Dans mon cas, j'ai résolu ce problème en mettant également à jour Web.config sur le serveur en direct que le VS a mis à jour lors de la mise à niveau vers MVC 5

rajeemcariazo
la source