Die Site funktioniert nicht mehr in asp.net System.Web.WebPages.Razor.Configuration.HostSection kann nicht umgewandelt werden

115

Ich habe ein solches Problem auf dem Server

[A] System.Web.WebPages.Razor.Configuration.HostSection kann nicht in [B] System.Web.WebPages.Razor.Configuration.HostSection umgewandelt werden. Typ A stammt aus 'System.Web.WebPages.Razor, Version = 2.0.0.0, Culture = neutral, PublicKeyToken = 31bf3856ad364e35' im Kontext 'Default' am Speicherort 'C: \ Windows \ Microsoft.Net \ Assembly \ GAC_MSIL \ System .Web.WebPages.Razor \ v4.0_2.0.0.0__31bf3856ad364e35 \ System.Web.WebPages.Razor.dll '. Typ B stammt aus 'System.Web.WebPages.Razor, Version = 1.0.0.0, Culture = neutral, PublicKeyToken = 31bf3856ad364e35' im Kontext 'Default' am Speicherort 'C: \ Windows \ Microsoft.Net \ Assembly \ GAC_MSIL \ System .Web.WebPages.Razor \ v4.0_1.0.0.0__31bf3856ad364e35 \ System.Web.WebPages.Razor.dll '.

Beschreibung: Während der Ausführung der aktuellen Webanforderung ist eine nicht behandelte Ausnahme aufgetreten. Bitte überprüfen Sie die Stapelverfolgung, um weitere Informationen über den Fehler und dessen Ursprung im Code zu erhalten.

Ausnahmedetails: System.InvalidCastException: [A] System.Web.WebPages.Razor.Configuration.HostSection kann nicht in [B] System.Web.WebPages.Razor.Configuration.HostSection umgewandelt werden. Typ A stammt aus 'System.Web.WebPages.Razor, Version = 2.0.0.0, Culture = neutral, PublicKeyToken = 31bf3856ad364e35' im Kontext 'Default' am Speicherort 'C: \ Windows \ Microsoft.Net \ Assembly \ GAC_MSIL \ System .Web.WebPages.Razor \ v4.0_2.0.0.0__31bf3856ad364e35 \ System.Web.WebPages.Razor.dll '. Typ B stammt aus 'System.Web.WebPages.Razor, Version = 1.0.0.0, Culture = neutral, PublicKeyToken = 31bf3856ad364e35' im Kontext 'Default' am Speicherort 'C: \ Windows \ Microsoft.Net \ Assembly \ GAC_MSIL \ System .Web.WebPages.Razor \ v4.0_1.0.0.0__31bf3856ad364e35 \ System.Web.WebPages.Razor.dll '.

Quellfehler:

Ich habe MVC 3 auf dem Serer und auf meinem Computer installiert. Ich habe versucht, es durch eine 15 Tage alte Codebasis zu ersetzen, aber das gleiche Problem besteht.

jetzt möchte ich es lösen. Weiß jemand, wie ich das beheben kann?

user2632851
quelle
In Ihrer Anwendung scheinen einige Assemblys von verschiedenen Rasiermesserversionen abhängig zu sein. Überprüfen Sie Ihre Assemblys mit ildasm oder .NET Reflector, um die Abhängigkeiten zu ermitteln.
Paulo Morgado

Antworten:

200

Stellen Sie im Stammverzeichnis Web.config sicher, dass AssemblyBinding die richtige Version für die Assembly "System.Web.WebPages.Razor" und "System.Web.Mvc" enthält. Überprüfen Sie, ob sie tatsächlich vorhanden sind, und mein Assembly-Tag "System.Web.WebPages.Razor" fehlte, was den Fehler verursachte. Ich hatte meine Assembly-Versionen zum Zeitpunkt dieses Schreibens mit vollständigen NuGet-Updates auf 3.0 bzw. 5.0 eingestellt. Der Code sollte ungefähr so ​​aussehen wie unten. Das publicKeyToken bleibt zwischen den Versionen gleich. Prost!

<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>
Ian Flynn
quelle
2
Hat für mich gearbeitet. Mir fehlten Razor-Informationen und MVC zeigte auf die falsche Version.
Hoakie
Gleiche Situation wie @Hoakie - Razor wurde auf 3.0.0 und MVC auf 5.0.0 aktualisiert, und es gab keine Razor-abhängige Assembly-Referenz. MVC sagte weiterhin oldVersion = "1.0.0.0-4.0.0.0" newVersion = "4.0.0.0". Das oben genannte Razor DependentAssembly-XML wurde hinzugefügt und 4.0.0.0 in 5.0.0.0 und Bobs Onkel geändert.
Scott Baker
2
Das hat bei mir funktioniert, danke. Ich hatte "System.Web.WebPages" mit den richtigen Bindungen, aber es funktionierte nicht, bis ich auch den Razor-Schlüssel hinzufügte. Bei anderen Projekten musste ich das jedoch nicht tun. Ich bin mir nicht sicher, was der Unterschied ist und warum die erstklassigen Bindungen für Razor nicht funktionieren würden. Kennt jemand die Antwort?
Shane
Hier gilt das gleiche. Ich habe den MVC-Eintrag, aber nicht den Razor-Eintrag. Es funktioniert jetzt. Danke dir.
Yves Tkaczyk
Dies funktioniert stackoverflow.com/questions/17454852/…
Rodolpho Brock
40

Mein Fall war ein Upgrade von mvc4 auf mvc5.

Ich habe sichergestellt, dass meine Referenzen synchron sind (mit einer neu erstellten mvc5-App), die Datei web.config entsprechend aktualisiert und es hat immer noch nicht funktioniert. Es hat endlich funktioniert, als ich meine web.config-Datei ( INSIDE THE VIEWS-Verzeichnis ) geändert habe von:

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

Dazu:

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

ERINNERN SIE SICH: Stoppen Sie iis (Express oder Native), bereinigen Sie die Lösung, erstellen Sie und führen Sie es aus.

user3141889
quelle
Ich denke, diese Antwort sollte eigentlich eine Antwort sein. Die Assemblybindung ist normalerweise in Ordnung, wenn der Update-Package-Ansatz für das Upgrade von mvc4 auf mvc5 verwendet wird.
Roman
34

Nur für den Fall, dass die Antwort von ian nicht ausreicht (und die Baugruppen korrekt sind, aber das Casting immer noch falsch ist), haben Sie die wahrscheinlich noch nicht aktualisiert <configSections>, um die neue Baugruppe wiederzugeben. Stellen Sie sicher, dass der Assembly-Teil auch auf Version 3.0 der System.Web.WebPages.RazorBibliothek verweist . z.B

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

(Beachten Sie, dass sie alle version=3.0.0jetzt referenzieren )

Brad Christie
quelle
8
Ich möchte nur hinzufügen, dass Sie, wenn Sie diese Einstellungen nicht im Stammverzeichnis von Web.Config finden, auch das Verzeichnis Web.Config im Ordner Ansichten überprüfen.
Gligoran
4
Ja, das Problem war für mich der Views-Ordner web.config.
Matthew Nichols
15

Ians Lösung hat in einem Projekt funktioniert, aber für andere benötige ich die umfassenderen Informationen unter Upgrade auf MVC 5 und Web API 2

Ken Mc
quelle
Dieser Artikel hat es für mich getan. Vielen Dank!
Gligoran
Ich denke, dieser Artikel enthält die korrekteste und vollständigste Upgrade-Beschreibung. Vielen Dank.
Mikhail Brinchuk
1

Dieses Problem tritt sehr häufig auf, wenn Sie für MVC 4 entwickeln und dann plötzlich ein Paket installieren, das in einer neueren Version verfügbar ist, sodass die gesamte Anwendung beschädigt wird.

Die einzige Lösung für dieses Problem besteht darin, Ihre gesamte Anwendung auf eine neuere Version zu aktualisieren oder das alte Paket zu installieren, das mit Ihrer Anwendung kompatibel ist

ProgrammingNinja
quelle
1

Problem:

[A] System.Web.WebPages.Razor.Configuration.HostSection kann nicht in [B] System.Web.WebPages.Razor.Configuration.HostSection umgewandelt werden. Typ A stammt aus 'System.Web.WebPages.Razor, Version = 2.0.0.0, Culture = neutral, PublicKeyToken = 31bf3856ad364e35' im Kontext 'Default' am Speicherort 'C: \ Windows \ Microsoft.Net \ Assembly \ GAC_MSIL \ System .Web.WebPages.Razor \ v4.0_2.0.0.0__31bf3856ad364e35 \ System.Web.WebPages.Razor.dll '. Typ B stammt aus 'System.Web.WebPages.Razor, Version = 3.0.0.0, Culture = neutral, PublicKeyToken = 31bf3856ad364e35' im Kontext 'Default' am Speicherort 'C: \ Windows \ Microsoft.NET \ Framework64 \ v4.0.30319 \ Temporäre ASP.NET-Dateien \ rbs.ceds.todomvcdemo \ 73d0b7c7 \ 46e3986d \ Assembly \ dl3 \ 21020800 \ 101279fc_da94cf01 \ System.Web.WebPages.Razor.dll '.

Identifizierung:

Der Fehler liegt in der Konfigurationsdatei dh web.config Ihres Projekts.

Hier finden Sie, dass die Razor-Version auf 2.0.0.0 eingestellt ist, wo wie in Ihrem Projekt die Version 2.0.0.0 nicht verfügbar ist.

Lösung:

Es ist einfach, ändern Sie einfach die Version von 2.0.0.0 auf 3.0.0.0 und es wird die Magie tun.

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

Sie müssen keine Umleitung vornehmen, da dies die Dinge kompliziert macht.

codebasiert
quelle
0

Ich habe ein Problem und eine Lösung gefunden.

1 Ich ziele auf meinen Code auf 4.0 und lade dann den Code hoch und es hat funktioniert. Davor aktualisiere ich auch meinen Code auf asp.net MVC 4.

jetzt ist es Arbeit :)

user2632851
quelle
3
Könnten Sie genauer sein?
Nwayve
0

Öffnen Sie den Speicherort der beiden DLL-Dateien in Ihrem System. Kopieren Sie eine der DLLs in Ihrem Dateispeicherort in die andere
und versuchen Sie, das Projekt auszuführen.

user4287068
quelle
0

Eine andere Möglichkeit, dies zu beheben, ohne Referenzen aktualisieren zu müssen, ist diese

  <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>
Fernando Gonzalez Sanchez
quelle