J'ai un problème comme celui-ci sur le serveur
[A] System.Web.WebPages.Razor.Configuration.HostSection ne peut pas être converti en [B] System.Web.WebPage.Razor.Configuration.HostSection. Le type A provient de 'System.Web.WebPages.Razor, Version = 2.0.0.0, Culture = neutre, PublicKeyToken = 31bf3856ad364e35' dans le contexte 'Par défaut' à 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 = 1.0.0.0, Culture = neutre, PublicKeyToken = 31bf3856ad364e35' dans le contexte 'Par défaut' à l'emplacement 'C:\Windows\Microsoft.Net\Assembly\GAC_MSIL\System .Web.WebPages.Razor\v4.0_1.0.0.0__31bf3856ad364e35\System.Web.WebPages.Razor.dll '.
Description: une exception non gérée s'est produite lors de l'exécution de la demande Web en cours. Veuillez consulter la trace de la pile pour plus d'informations sur l'erreur et son origine dans le code.
Détails d'exception: System.InvalidCastException: [A] System.Web.WebPage.Razor.Configuration.HostSection ne peut pas être transtypé en [B] System.Web.WebPages.Razor.Configuration.HostSection. Le type A provient de 'System.Web.WebPages.Razor, Version = 2.0.0.0, Culture = neutre, PublicKeyToken = 31bf3856ad364e35' dans le contexte 'Par défaut' à 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 = 1.0.0.0, Culture = neutre, PublicKeyToken = 31bf3856ad364e35' dans le contexte 'Par défaut' à l'emplacement 'C:\Windows\Microsoft.Net\Assembly\GAC_MSIL\System .Web.WebPages.Razor\v4.0_1.0.0.0__31bf3856ad364e35\System.Web.WebPages.Razor.dll '.
Erreur de source:
J'ai installé MVC 3 sur le sereur et sur mon ordinateur. J'ai essayé de le remplacer par une base de code vieille de 15 jours, mais le même problème existe.
maintenant je veux le résoudre. Est-ce que quelqu'un sait comment je peux résoudre ce problème?.
Dans la racine Web.config, assurez-vous que assemblyBinding contient la version appropriée pour l'assembly "System.Web.WebPages.Razor" et "System.Web.Mvc". Vérifiez leur existence réelle ainsi que ma balise d'assemblage "System.Web.WebPages.Razor" manquante, ce qui a provoqué l'erreur. Au moment de la rédaction de cet article, mes versions d’Assembly étaient respectivement définies sur les versions 3.0 et 5.0, avec des mises à jour complètes de NuGet. Le code devrait ressembler à quelque chose comme ci-dessous. PublicKeyToken restera le même entre les versions. À votre santé!
<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>
Mon cas passait de mvc4 à mvc5.
Je me suis assuré que mes références étaient synchronisées (avec une application mvc5 nouvellement créée), j'ai mis à jour le fichier web.config en conséquence et cela ne fonctionnait toujours pas. Cela a finalement fonctionné quand j'ai changé mon fichier web.config (répertoire INSIDE THE VIEWS) de:
<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>
Pour ça:
<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>
N'OUBLIEZ PAS: arrêtez iis (express ou natif), nettoyez la solution, générez et exécutez.
Juste au cas où la réponse de ian ne suffirait pas (et que les assemblages sont corrects, mais que le casting est toujours faux), il est probable que vous n'ayez pas mis à jour le <configSections>
pour refléter encore la nouvelle Assemblée. assurez-vous que la partie Assembly fait également référence à la version 3.0 du fichier System.Web.WebPages.Razor
bibliothèque. par exemple.
<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>
(Notez qu'ils font tous référence à version=3.0.0
maintenant)
La solution de Ian a fonctionné dans un projet, mais pour d'autres j'ai besoin d'informations plus complètes dans Mise à niveau vers MVC 5 et Web API 2
Ce problème est très courant lorsque vous développez pour MVC 4 et que vous installez ensuite soudainement un paquet disponible dans la version la plus récente, de sorte qu’il casse l’ensemble de l’application.
La seule solution à ce problème consiste à mettre à niveau l'intégralité de votre application vers une version plus récente ou à installer l'ancien package compatible avec votre application.
Problème:
[A] System.Web.WebPages.Razor.Configuration.HostSection ne peut pas être converti en [B] System.Web.WebPage.Razor.Configuration.HostSection. Le type A provient de 'System.Web.WebPages.Razor, Version = 2.0.0.0, Culture = neutre, PublicKeyToken = 31bf3856ad364e35' dans le contexte 'Par défaut' à 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 = neutre, PublicKeyToken = 31bf3856ad364e35' dans le contexte 'Par défaut' à l'emplacement 'C:\Windows\Microsoft.NET\Framework64\v4.0.30319\Fichiers ASP.NET temporaires\rbs.ceds.todomvcdemo\73d0b7c7\46e3986d\Assembly\dl3\21020800\101279fc_da94cf01\System.Web.WebPages.Razor.dll '.
Identification:
L'erreur concerne le fichier de configuration, à savoir web.config de votre projet.
Ici, vous constaterez que la version de Razor est définie sur la version 2.0.0.0, la version 2.0.0.0 n'étant pas disponible dans votre projet.
Solution:
C’est simple, il suffit de changer la version de 2.0.0.0 à 3.0.0.0 pour que la magie opère.
type = "System.Web.WebPages.Razor.Configuration.RazorWebSectionGroup, System.Web.WebPage.Razor, Version = 3.0.0.0 type =" System.Web.WebPages.Razor.Configuration.RazorPagesSection, System.Web.Web.WebPages.Razor , Version = 3.0.0.0
Vous n'avez pas besoin de mettre la redirection ou autre chose car cela compliquera les choses.
Ouvrez l’emplacement des deux fichiers DLL dans votre système et copiez l’une des dll de votre fichier vers un autre.
et essayez de lancer le projet.
J'ai trouvé un problème et une solution.
1 Je cible mon code sur 4.0, puis le télécharge et tout fonctionne. Avant cela, je mets également à jour mon code vers asp.net MVC 4.
maintenant c'est du travail :)
Une autre façon de résoudre ce problème sans avoir à mettre à jour les références est la suivante:
<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>