web-dev-qa-db-fra.com

Le site a cessé de fonctionner dans asp.net System.Web.WebPages.Razor.Configuration.HostSection ne peut pas être converti en

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

114
user2632851

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>
200
Ian Flynn

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.

40
user3141889

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)

34
Brad Christie

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

15
Ken Mc

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.

1
ProgrammingNinja

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.

1
codebased

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.

0
user4287068

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

0
user2632851

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>