it-swarm.com.de

Datei oder Assembly 'System.Web.Mvc' konnte nicht geladen werden. Wie benutze ich die richtige Referenz?

Ich habe eine auf ASP.NET-Webformularen basierende Anwendung, die auch MVC 5 unterstützt. Ich habe MVC 5-API-Controller in mein Projekt aufgenommen, für die ich Json von Version 4.5 auf 7.0 aktualisieren musste. Nachdem ich diese Änderungen beim Starten der Anwendung vorgenommen habe, erhalte ich die folgende Fehlermeldung:

Datei oder Assembly 'System.Web.Mvc' oder einer ihrer .__-Dateien konnte nicht geladen werden. Abhängigkeiten. Die Manifestdefinition der gefundenen Assembly lautet nicht passen Sie die Assembly-Referenz an. (Ausnahme von HRESULT: 0x80131040)

Ich habe die Referenz auf System.Web.Mvc geprüft. Im Eigenschaftendialog ist die Laufzeitversion v4.0.30319 und die Version 5.0.0.0. In web.config werden die Assemblys wie folgt festgelegt:

<assemblyBinding xmlns="urn:schemas-Microsoft-com:asm.v1">
  <dependentAssembly>
    <assemblyIdentity name="NLog" publicKeyToken="5120e14c03d0593c" culture="neutral" />
    <bindingRedirect oldVersion="0.0.0.0-2.0.1.0" newVersion="2.0.1.0" />
  </dependentAssembly>
  <dependentAssembly>
    <assemblyIdentity name="AntiXssLibrary" publicKeyToken="d127efab8a9c114f" culture="neutral" />
    <bindingRedirect oldVersion="0.0.0.0-4.3.0.0" newVersion="4.3.0.0" />
  </dependentAssembly>
  <dependentAssembly>
    <assemblyIdentity name="System.Web.Helpers" publicKeyToken="31bf3856ad364e35" />
    <bindingRedirect oldVersion="1.0.0.0-3.0.0.0" newVersion="3.0.0.0" />
  </dependentAssembly>
  <dependentAssembly>
    <assemblyIdentity name="System.Web.WebPages" 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.2.3.0" newVersion="5.2.3.0" />
  </dependentAssembly>
  <!--<dependentAssembly>
    <assemblyIdentity name="Newtonsoft.Json" publicKeyToken="30ad4fe6b2a6aeed" culture="neutral" />
    <bindingRedirect oldVersion="0.0.0.0-4.5.0.0" newVersion="4.5.0.0" />
  </dependentAssembly>-->
  <dependentAssembly>
    <assemblyIdentity name="Newtonsoft.Json" publicKeyToken="30ad4fe6b2a6aeed" />
    <bindingRedirect oldVersion="0.0.0.0-7.0.0.0" newVersion="7.0.0.0" />
  </dependentAssembly>
  <dependentAssembly>
    <assemblyIdentity name="System.Net.Http.Formatting" publicKeyToken="31bf3856ad364e35" culture="neutral" />
    <bindingRedirect oldVersion="0.0.0.0-5.2.3.0" newVersion="5.2.3.0" />
  </dependentAssembly>
  <dependentAssembly>
    <assemblyIdentity name="System.Web.Http" publicKeyToken="31bf3856ad364e35" culture="neutral" />
    <bindingRedirect oldVersion="0.0.0.0-5.2.3.0" newVersion="5.2.3.0" />
  </dependentAssembly>
</assemblyBinding>

Das vollständige Fehlerprotokoll wird unten angezeigt:

=== Pre-Bind-Statusinformationen === LOG: DisplayName = System.Web.Mvc (Partial) WRN: Für ein .__ wurden Teilbindungsinformationen bereitgestellt. Assembly: WRN: Assemblyname: System.Web.Mvc | Domänen-ID: 2 WRN: A Teilbindung tritt auf, wenn nur ein Teil des Assembly-Anzeigenamens .__ ist. unter der Voraussetzung. WRN: Dies kann dazu führen, dass die Sammelmappe falsch geladen wird Versammlung. WRN: Es wird empfohlen, einen vollständig angegebenen Text anzugeben Identität für die Assembly, WRN: das besteht aus dem einfachen Namen Version, Kultur und Token des öffentlichen Schlüssels. WRN: Siehe Whitepaper http://go.Microsoft.com/fwlink/?LinkId=109270 Weitere Informationen und gemeinsame Lösungen für dieses Problem. LOG: Appbase = Datei: /// C:/Benutzer/Ahmed/Dokumente/Visual Studio 2013/Projekte/MediaSoft/Projekt/c #/YuClone/YuClone/LOG: Anfänglich PrivatePath = C:\Benutzer\Ahmed\Dokumente\Visual Studio 2013\Projekte\MediaSoft\Projekt\c #\YuClone\YuClone\bin Anrufen Montage: (Unbekannt) . === LOG: Diese Bindung wird im Standardladekontext gestartet. LOG: Verwenden der Anwendungskonfigurationsdatei: C:\Users\Ahmed\Documents\Visual Studio 2013\Projekte\MediaSoft\Project\c #\YuClone\YuClone\web.config LOG: Verwenden der Host-Konfigurationsdatei: C:\Benutzer\Ahmed\Dokumente\IISExpress\config\aspnet.config LOG: Verwenden von Maschinenkonfigurationsdatei von C:\Windows\Microsoft.NET\Framework\v4.0.30319\config\machine.config . LOG: Richtlinie, die derzeit nicht auf Verweise angewendet wird (private, benutzerdefinierte, teilweise oder ortsbezogene Assembly-Bindung). LOG: Versuch Download der neuen URL Datei: /// C:/Benutzer/Ahmed/AppData/Local/Temp/Temporäres ASP.NET Dateien/root/22a49c5f/2f5ffeb9/System.Web.Mvc.DLL. LOG: Versuch Download der neuen URL Datei: /// C:/Benutzer/Ahmed/AppData/Local/Temp/Temporäres ASP.NET Dateien/root/22a49c5f/2f5ffeb9/System.Web.Mvc/System.Web.Mvc.DLL. LOG: Versuch des Herunterladens einer neuen URL-Datei: /// C: /Users/Ahmed/Documents/Visual Studio 2013/Projekte/MediaSoft/Projekt/c #/YuClone/YuClone/bin/System.Web.Mvc.DLL . LOG: Verwenden der Anwendungskonfigurationsdatei: C:\Benutzer\Ahmed\Documents\Visual Studio 2013\Projekte\MediaSoft\Project\c #\YuClone\YuClone\web.config LOG: Verwenden der Host-Konfigurationsdatei: C:\Benutzer\Ahmed\Dokumente\IISExpress\config\aspnet.config LOG: Verwenden von Maschinenkonfigurationsdatei von C:\Windows\Microsoft.NET\Framework\v4.0.30319\config\machine.config . LOG: Umleitung in der Anwendungskonfigurationsdatei gefunden: 5.0.0.0 umgeleitet auf 5.2.3.0. LOG: Referenz nach der Richtlinie: System.Web.Mvc, Version = 5.2.3.0, Kultur = neutral, PublicKeyToken = 31bf3856ad364e35 LOG: Versuch des Herunterladens einer neuen URL Datei: /// C:/Benutzer/Ahmed/AppData/Local/Temp/Temporäres ASP.NET Dateien/root/22a49c5f/2f5ffeb9/System.Web.Mvc.DLL. LOG: Versuch Download der neuen URL Datei: /// C:/Benutzer/Ahmed/AppData/Local/Temp/Temporäres ASP.NET Dateien/root/22a49c5f/2f5ffeb9/System.Web.Mvc/System.Web.Mvc.DLL. LOG: Versuch des Herunterladens einer neuen URL-Datei: /// C: /Users/Ahmed/Documents/Visual Studio 2013/Projekte/MediaSoft/Projekt/c #/YuClone/YuClone/bin/System.Web.Mvc.DLL . WRN: Der Vergleich des Assemblynamens führte zu einer Nichtübereinstimmung: Minor Version ERR: Installation der Assembly konnte nicht abgeschlossen werden (hr = 0x80131040) . Die Prüfung wurde abgebrochen.

Folgendes ist das Stack-Trace

[FileLoadException: Datei oder Assembly 'System.Web.Mvc' .__ konnte nicht geladen werden. oder eine seiner Abhängigkeiten. Die Manifestdefinition der gefundenen Assembly stimmt nicht mit der Assembly-Referenz überein. (Ausnahme von HRESULT: 0x80131040)]

[FileLoadException: Datei oder Assembly 'System.Web.Mvc. .__ konnte nicht geladen werden. Version = 5.2.3.0, Kultur = neutral, PublicKeyToken = 31bf3856ad364e35 'oder eine seiner Abhängigkeiten. Die Manifestdefinition der gefundenen Assembly stimmt nicht mit der Assembly-Referenz überein. (Ausnahme von HRESULT: 0x80131040)] System.Reflection.RuntimeAssembly._nLoad (AssemblyName Dateiname, Zeichenfolge codeBase, Evidence assemblySecurity, RuntimeAssembly forIntrospection, Boolean suppressSecurityChecks) +0











Wie aktualisiere ich die Version von System.Web.Mvc, um auf die richtige Assembly zu verweisen?

How do I upgrade the version of System.Web.Mvc to point to the correct assembly?

15
Ahmed Mujtaba

Fehler wurde aufgrund falscher Bindung verursacht. Ich habe mich verändert: 

<dependentAssembly>
    <assemblyIdentity name="System.Net.Http.Formatting" publicKeyToken="31bf3856ad364e35" culture="neutral" />
    <bindingRedirect oldVersion="0.0.0.0-5.2.3.0" newVersion="5.2.3.0" />
  </dependentAssembly>

zu

  <dependentAssembly>
<assemblyIdentity name="System.Net.Http.Formatting" publicKeyToken="31bf3856ad364e35" culture="neutral" />
<bindingRedirect oldVersion="0.0.0.0-5.2.3.0" newVersion="5.0.0.0" />

und es funktioniert jetzt.

12
Ahmed Mujtaba

Nun, es ist die Versionsbindung Sorge, und für die Benutzer, die sich darauf einlassen jetzt wie in 2019, mit etwa VS 2017 , ( da bin ich draufgekommen) und wie das OP erwähnt:

Wie aktualisiere ich die Version von System.Web.Mvc, um auf die richtige Assembly zu verweisen?

Lass immer nuget package manager Tu es für dich, um die richtigen Versionen für dein Projekt zu installieren .NET Version etc.

Seitdem habe ich hier nach meinem Problem gesucht:

Datei oder Assembly 'System.Web.Mvc, Version = 5.2.4.0, Culture = neutral, PublicKeyToken = 31bf3856ad364e35' oder eine ihrer Abhängigkeiten konnte nicht geladen werden. Die Manifestdefinition der lokalisierten Assembly stimmt nicht mit der Assemblyreferenz überein. (Ausnahme von HRESULT: 0x80131040)

und habe den Hinweis auf die Versionsbindung erhalten, habe ich folgendes gemacht: Nuget Mvc Update

und es funktionierte danach ganz reibungslos.

@ Ahmed, Danke, dass du in die richtige Richtung weisst

7
Irf

In meinem Fall habe ich das Problem gelöst, indem ich die PageControls- und assemblyBinding -Elemente in config so geändert habe, dass sie mit der aktuellen Version von `System.Web.Mvc (5.2.4.0) übereinstimmen

PageControls

Ersetzen Sie im Abschnitt PageControls die Version in alle Vorkommen der Assembly "System.Web.Mvc" für Ihre aktuelle Version:

 <pages controlRenderingCompatibilityVersion="4.0" validateRequest="false" pageParserFilterType="System.Web.Mvc.ViewTypeParserFilter, System.Web.Mvc, Version=5.2.4.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" pageBaseType="System.Web.Mvc.ViewPage, System.Web.Mvc, Version=5.2.4.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" userControlBaseType="System.Web.Mvc.ViewUserControl, System.Web.Mvc, Version=5.2.4.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35">
  <controls>
    <add Assembly="System.Web.Mvc, Version=5.2.4.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" namespace="System.Web.Mvc" tagPrefix="mvc"/>
  </controls>

assemblyBinding

Ordnen Sie unter assemblyBindingelement alle vorherigen Versionen der Assembly der aktuellen Version zu.

 <dependentAssembly>
    <assemblyIdentity name="System.Web.Mvc" publicKeyToken="31bf3856ad364e35"/>
    <bindingRedirect oldVersion="0.0.0.0-5.2.4.0" newVersion="5.2.4.0"/>
  </dependentAssembly>

Dieses Element wird von jedem Paket verwendet, das auf eine alte Version verweist. 

So überprüfen Sie die aktuelle Version von 'System.Web.Mvc'

Ihre aktuelle Version von System.Web.Mvc kann auf der Registerkarte "Eigenschaften" angezeigt werden. Wählen Sie die Assembly aus den Projektverweisen wie folgt aus:

 enter image description here

Hinweis: Ich beantworte eine 2 Jahre alte Frage, daher können die Gründe für diesen Fehler jetzt unterschiedlich sein

3
ByteArtisan

In meinem Fall funktionierte die Anwendung lokal, jedoch nicht auf einem der Server. Das Entfernen des Abschnitts für 'System.Web.Mvc' hat das Problem für mich behoben.

0
Vishal