Datei oder Assembly 'System.Web.Mvc' konnte nicht geladen werden.

200

Meine neue ASP.NET MVC-Webanwendung funktioniert auf meiner Entwicklungsarbeitsstation, wird jedoch nicht auf meinem Webserver ausgeführt ...


Serverfehler in '/' Anwendung.


Konfigurationsfehler

Beschreibung: Bei der Verarbeitung einer Konfigurationsdatei, die zur Bearbeitung dieser Anforderung erforderlich ist, ist ein Fehler aufgetreten. Bitte überprüfen Sie die spezifischen Fehlerdetails unten und ändern Sie Ihre Konfigurationsdatei entsprechend.

Parser-Fehlermeldung: Datei oder Assembly 'System.Web.Mvc, Version = 1.0.0.0, Kultur = neutral, PublicKeyToken = 31bf3856ad364e35' oder eine ihrer Abhängigkeiten konnte nicht geladen werden. Die angegebene Datei wurde vom System nicht gefunden.

Quellfehler:

Line 44:         <add assembly="System.Web.Abstractions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"/>
Line 45:         <add assembly="System.Web.Routing, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"/>
Line 46:         <add assembly="System.Web.Mvc, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"/>
Line 47:         <add assembly="System.Data.DataSetExtensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=B77A5C561934E089"/>
Line 48:         <add assembly="System.Xml.Linq, Version=3.5.0.0, Culture=neutral, PublicKeyToken=B77A5C561934E089"/>

Quelldatei : C: \ inetpub \ www.example.org \ web.config Zeile: 46

Assembly Load Trace: Die folgenden Informationen können hilfreich sein, um festzustellen, warum die Assembly 'System.Web.Mvc, Version = 1.0.0.0, Culture = neutral, PublicKeyToken = 31bf3856ad364e35' nicht geladen werden konnte.

WRN: Die Protokollierung der Baugruppenbindung ist deaktiviert.
Setzen Sie den Registrierungswert [HKLM \ Software \ Microsoft \ Fusion! EnableLog] (DWORD) auf 1, um die Protokollierung von Assemblybindungsfehlern zu aktivieren.
Hinweis: Mit der Protokollierung von Assemblybindungsfehlern ist ein Leistungsverlust verbunden.
Entfernen Sie zum Deaktivieren dieser Funktion den Registrierungswert [HKLM \ Software \ Microsoft \ Fusion! EnableLog].

Versionsinformationen: Microsoft .NET Framework Version: 2.0.50727.3053; ASP.NET-Version: 2.0.50727.3053


Muss ich die AspNetMVCBeta-setup.msi auf dem Server installieren ? Oder gibt es ein anderes Installationsprogramm für Server?

Geben Sie hier die Bildbeschreibung ein

Zack Peterson
quelle

Antworten:

215

Ich habe gerade einen Blog-Beitrag geschrieben, der sich damit befasst. Sie können ASP.NET MVC auf Ihrem Server installieren oder die Schritte hier ausführen .


EDIT: (von jcolebrand) Ich habe diesen Link durchgesehen und hatte dann das gleiche Problem wie Victor unten . Ich schlage vor, dass Sie auch diese hinzufügen:

* Microsoft.Web.Infrastructure
* System.Web.Razor
* System.Web.WebPages.Deployment
* System.Web.WebPages.Razor
Gehackt
quelle
6
Hinweis: Wenn Sie MVC4 (derzeit Beta) installiert haben, möchten Sie Version 1.0 dieser DLLs und System.Web.Helpers herunterladen (zumindest musste ich dies tun).
Tracker1
1
-1 In Ihrem Beitrag, auf den Sie verlinken, wird nicht erläutert, wie Sie die Microsoft.Web.Infrastructure über den Veröffentlichungsmechanismus auf den Webserver übertragen. Dinge direkt auf einem Server installieren zu müssen, eine Art Sux.
Mark Rogers
1
Mit Visual Studio 2010 ist dies viel einfacher geworden, wie hier erklärt: britishdeveloper.co.uk/2011/06/…
Daniël Tulp
oder hier, wenn Sie Web Deploy
Jeroen K
Ich musste den bin-Ordner abspritzen und dann erneut veröffentlichen, wenn Sie das Bereitstellungspaket nicht verwenden.
Robert Koch
41

Ich bin auf das gleiche Problem gestoßen wie sgriffinusa. Zusätzlich zu den Referenzen schlägt Phils Artikel vor: http://www.haacked.com/archive/2008/11/03/bin-deploy-aspnetmvc.aspx . Ich habe diese hinzugefügt:

* Microsoft.Web.Infrastructure
* System.Web.Razor
* System.Web.WebPages.Deployment
* System.Web.WebPages.Razor

Godaddy Deployment hat perfekt funktioniert. Deaktivieren Sie benutzerdefinierte Fehler und fügen Sie Verweise hinzu, um die Fehler zu korrigieren. Das sollte dich in die richtige Richtung führen.

Victor Juri
quelle
26

Die Installation von MVC direkt auf Ihrem Webserver ist eine Option, da die Assemblys dann im GAC installiert werden. Sie können die Assemblys auch bin bereitstellen, um Ihren Server von Assemblys vor der Veröffentlichung fernzuhalten, bis eine endgültige Version verfügbar ist.

Phil Haack hat vor ein paar Tagen einen schönen Artikel über die Bereitstellung von MVC zusammen mit Ihrer App veröffentlicht. Daher ist eine direkte Installation nicht erforderlich:

http://www.haacked.com/archive/2008/11/03/bin-deploy-aspnetmvc.aspx

Matt Rudder
quelle
25

Beim Versuch, meine MVC3 Razor-Webanwendung auf GoDaddy Shared Hosting bereitzustellen, ist dasselbe Problem aufgetreten. Es gibt einige zusätzliche DLLs, auf die verwiesen werden muss. Details hier: http://paulmason.biz/?p=108

Grundsätzlich müssen Sie zusätzlich zu den in @ Haackeds Beitrag aufgeführten Verweisen auf Folgendes hinzufügen und festlegen, dass sie wie beschrieben lokal bereitgestellt werden.

  • Microsoft.Web.Infrastructure
  • System.Web.Razor
  • System.Web.WebPages.Deployment
  • System.Web.WebPages.Razor
sgriffinusa
quelle
Vielen Dank, nachdem Sie die Referenz manuell hinzugefügt und dann lokal bereitgestellt haben, wurde das Problem für MVC3 behoben!
Stefanvds
Das selbe hier. Gute Anleitung zum Hinzufügen dieser zusätzlichen DLLs. Vielen Dank!
Mike L.
Das selbe hier. Nicht auf GoDaddy, sondern auf meinem Firmenserver, also muss dies nur ein allgemeiner Fall sein.
TJKjaer
13

Klicken Sie in VS2010 im Projektmappen-Explorer mit der rechten Maustaste auf das Projekt und wählen Sie "Bereitstellbare Abhängigkeiten hinzufügen". Aktivieren Sie dann die Kontrollkästchen für MVC im folgenden Dialogfeld.

Dadurch wird im Projekt ein Ordner '_bin_deployableAssemblies' erstellt, der alle in anderen Antworten genannten DLL-Dateien enthält. Ich glaube, diese werden beim Erstellen eines Bereitstellungspakets in den Ordner bin kopiert.

Warrickh
quelle
9

Einfache Lösung. Klicken Sie in VS2010 mit der rechten Maustaste auf Ihr MVC-Projekt, wählen Sie "Bereitstellbare Abhängigkeiten hinzufügen ...", wählen Sie die gewünschten Optionen aus und klicken Sie auf "OK"

Achse
quelle
8

Schnelle und einfache Lösung: Ich hatte dieses Problem mit Microsoft.AspNet.Mvc -Version 5.2.3 und fand nach Durchlaufen all dieser Threads eine einfachste Lösung.

Folgen Sie einfach den Schritten:

  1. Öffnen Sie NuGet Package Manager in Visual Studio für Ihr Projekt
  2. Suchen Sie nach Microsoft.AspNet.Mvc
  3. Wenn gefunden, ändern Sie die Aktion in Deinstallieren und deinstallieren
  4. Wenn Sie fertig sind, installieren Sie es erneut und versuchen Sie es jetzt

Dadurch werden automatisch alle Probleme mit Referenzen behoben. Siehe Bild unten:

Geben Sie hier die Bildbeschreibung ein

Muhammad Amir
quelle
7

Hatte das gleiche Problem und fügte die gesamte Assembly hinzu, die sie sagten, bekam aber immer noch den gleichen Fehler.

Es stellt sich heraus, dass Sie die " Spezifische Version " = False machen müssen.

Bestimmte Version sollte falsch sein.

Romeo
quelle
Alternativ sollten Sie 'Copy Local' auf 'True' setzen, wenn es nicht aktiviert ist.
AStopher
6

Wir möchten es hinzufügen, weil wir eine Klassenbibliothek erstellen, die es verwendet.

Für mich ist es hier ...

C:\Program Files (x86)\Microsoft ASP.NET\ASP.NET MVC 4\Assemblies

Dave Shinkle
quelle
3

Wenn Sie KEINEN Hosting-Anbieter verwenden und Zugriff auf den zu installierenden Server haben ... Installieren Sie dann die MVC 3-Update-Tools. Führen Sie dies aus. Dadurch sparen Sie stundenlange Probleme auf einem Windows 2003-Server / IIS6-Computer. Ich habe diese Seite hier kommentiert. Nuget.Core.dll Versionsnummer stimmt nicht überein

Tom Stickel
quelle
3

Neben dem Haack-Posten hat Hanselman auch einen ähnlichen Posten. BIN Bereitstellen von ASP.NET MVC 3 mit Razor auf einem Windows Server ohne installierte MVC

Für mich war die Lösung "Copy Local = true" unzureichend, da die Projektreferenzen meiner Website nicht alle fehlenden DLLs enthielten. Wie Scott in seinem Beitrag erwähnt, musste ich außerdem zusätzliche DLLs aus dem folgenden Ordner in meiner Entwicklungsbox abrufen: C: \ Programme (x86) \ Microsoft ASP.NET \ ASP.NET-Webseiten \ v1.0 \ Assemblies. Die Fehlermeldung informierte mich darüber, welche DLL fehlte (System.Web.Infrastructure, System.Web.Razor usw.). Ich fügte jede fehlende DLL nacheinander hinzu, bis sie funktionierte.

James Lawruk
quelle
3

Ich habe ein "Update-Paket - Microsoft.AspNet.Mvc neu installieren" durchgeführt, um es in Visual Studio 2015 zu beheben.

Olaj
quelle
3

Eine wichtige Überlegung ist die Datei web.config. Einige Pakete können Ihre Bindungsumleitungen beschädigen und Chaos verursachen (das Rogue-Paket war ein internes Paket, bei dem ich die web.config nicht aus dem Paket entfernt oder die web.config im Paket sichergestellt habe hat keine Bindungsumleitungen. Wenn Sie beispielsweise den doppelten und falschen Knoten entfernen, wird dies behoben

    <runtime>
        <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
            <dependentAssembly>
                <assemblyIdentity name="System.Web.WebPages" publicKeyToken="31BF3856AD364E35" culture="neutral"/>
                <bindingRedirect oldVersion="0.0.0.0-3.0.0.0" newVersion="3.0.0.0"/>
            </dependentAssembly>
            <dependentAssembly>


                <assemblyIdentity name="System.Web.Mvc" publicKeyToken="31bf3856ad364e35"/>
                <bindingRedirect oldVersion="0.0.0.0-5.2.3.0" newVersion="5.2.3.0"/>
                <assemblyIdentity name="Microsoft.Owin" publicKeyToken="31bf3856ad364e35" culture="neutral"/>
                <bindingRedirect oldVersion="0.0.0.0-3.0.1.0" newVersion="3.0.1.0"/>
                <assemblyIdentity name="Microsoft.Owin.Security.OAuth" publicKeyToken="31bf3856ad364e35" culture="neutral"/>
                <assemblyIdentity name="Microsoft.Owin.Security" publicKeyToken="31bf3856ad364e35" culture="neutral"/>
                <assemblyIdentity name="Microsoft.Owin.Security.Cookies" publicKeyToken="31bf3856ad364e35" culture="neutral"/>
                <assemblyIdentity name="Newtonsoft.Json" publicKeyToken="30ad4fe6b2a6aeed" culture="neutral"/>
                <bindingRedirect oldVersion="0.0.0.0-9.0.0.0" newVersion="9.0.0.0"/>
                <assemblyIdentity name="WebGrease" publicKeyToken="31bf3856ad364e35" culture="neutral"/>
                <bindingRedirect oldVersion="0.0.0.0-1.6.5135.21930" newVersion="1.6.5135.21930"/>
                <assemblyIdentity name="Antlr3.Runtime" publicKeyToken="eb42632606e9261f" culture="neutral"/>
                <bindingRedirect oldVersion="0.0.0.0-3.5.0.2" newVersion="3.5.0.2"/>


                <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.Mvc" publicKeyToken="31bf3856ad364e35"/>
                <bindingRedirect oldVersion="0.0.0.0-5.2.3.0" newVersion="5.2.3.0"/>
            </dependentAssembly>
            <dependentAssembly>
                <assemblyIdentity name="Microsoft.Owin.Security" publicKeyToken="31bf3856ad364e35" culture="neutral"/>
                <bindingRedirect oldVersion="0.0.0.0-3.0.1.0" newVersion="3.0.1.0"/>
            </dependentAssembly>
            <dependentAssembly>
                <assemblyIdentity name="Microsoft.Owin" publicKeyToken="31bf3856ad364e35" culture="neutral"/>
                <bindingRedirect oldVersion="0.0.0.0-3.0.1.0" newVersion="3.0.1.0"/>
            </dependentAssembly>
            <dependentAssembly>
                <assemblyIdentity name="Newtonsoft.Json" publicKeyToken="30ad4fe6b2a6aeed" culture="neutral"/>
                <bindingRedirect oldVersion="0.0.0.0-9.0.0.0" newVersion="9.0.0.0"/>
            </dependentAssembly>
            <dependentAssembly>
                <assemblyIdentity name="WebGrease" publicKeyToken="31bf3856ad364e35" culture="neutral"/>
                <bindingRedirect oldVersion="0.0.0.0-1.6.5135.21930" newVersion="1.6.5135.21930"/>
            </dependentAssembly>
            <dependentAssembly>
                <assemblyIdentity name="Microsoft.Owin.Security.Cookies" publicKeyToken="31bf3856ad364e35" culture="neutral"/>
                <bindingRedirect oldVersion="0.0.0.0-3.0.1.0" newVersion="3.0.1.0"/>
            </dependentAssembly>
            <dependentAssembly>
                <assemblyIdentity name="Microsoft.Owin.Security.OAuth" publicKeyToken="31bf3856ad364e35" culture="neutral"/>
                <bindingRedirect oldVersion="0.0.0.0-3.0.1.0" newVersion="3.0.1.0"/>
            </dependentAssembly>
            <dependentAssembly>
                <assemblyIdentity name="SimpleInjector" publicKeyToken="984cb50dea722e99" culture="neutral"/>
                <bindingRedirect oldVersion="0.0.0.0-3.3.2.0" newVersion="3.3.2.0"/>
            </dependentAssembly>
            <dependentAssembly>
                <assemblyIdentity name="Antlr3.Runtime" publicKeyToken="eb42632606e9261f" culture="neutral"/>
                <bindingRedirect oldVersion="0.0.0.0-3.5.0.2" newVersion="3.5.0.2"/>
            </dependentAssembly>
            <dependentAssembly>
                <assemblyIdentity name="HtmlAgilityPack" publicKeyToken="bd319b19eaf3b43a" culture="neutral"/>
                <bindingRedirect oldVersion="0.0.0.0-1.4.9.5" newVersion="1.4.9.5"/>
            </dependentAssembly>
        </assemblyBinding>
    </runtime>

Durch Entfernen der Zeilen 8 bis 24 wird der Build korrigiert.

PBo
quelle
2

Überprüfen Sie auch die Version der Assembly in der Datei web.config in Ihrem Views-Ordner und stellen Sie sicher, dass sie übereinstimmt. Ich vergesse manchmal, dass sich an diesem Ort eine zweite web.config befindet.

Dave
quelle
2

Ich hatte das gleiche Problem mit einer Reihe von Assembly-Dateien, nachdem ich das Projekt auf eine andere Lösung verschoben hatte.

Für mich hat die web.configDatei versucht, diese Assembly hinzuzufügen:

<add assembly="System.Web.Helpers, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"/>

Dachte, die Referenz im Projekt zeigte auf die Version 3.0.0.0 (klicken Sie auf die Referenz und scrollen Sie zum Ende der Eigenschaften). Daher habe ich gerade die Referenzversion in der web.configDatei geändert .

Ich weiß nicht, ob das nur ein Fehler war. Das Problem beim Hinzufügen aller anderen Referenzen bestand darin, dass die Referenzen in der Konfigurationsdatei angezeigt wurden, aber im Projekt (im Lösungs-Explorer) überhaupt nicht referenziert wurden und die erforderlichen Dateien nicht mit den übrigen Projektdateien kopiert wurden. wahrscheinlich weil ich nicht bin"copy local = true"

Jetzt konnte ich diese Assemblys nicht in den addierbaren Assemblys finden (indem Sie mit der rechten Maustaste auf die Referenz klicken und versuchen, sie aus den Assemblys oder Erweiterungen hinzuzufügen). Stattdessen habe ich eine neue MVC-Lösung erstellt, die alle benötigten Assemblys und Referenzen hinzufügte, sie unter den neuen Projektreferenzen im Lösungs-Explorer fand und ihren Pfad im Eigenschaftenfenster für die Referenz fand.

Dann habe ich einfach die benötigten Bibliotheken in das andere Projekt kopiert und auf sie verwiesen.

Mikael Puusaari
quelle
1

Nachdem ich alles ausprobiert hatte und immer noch fehlgeschlagen war, war dies meine Lösung: Ich erinnerte mich, dass ich die MVC-Version in meinem Visual Studio zuletzt aktualisiert hatte, also führte ich das Projekt von einem anderen Visual Studio (einem anderen Computer) aus und lud dann die DLLs hoch und es funktionierte. Vielleicht hilft es jemandem ...

Matan L.
quelle
0

Ich verwende Jenkins mit .net-Projekten und hatte Probleme mit MVC 4-Referenzen.

Ich habe mein Problem endlich gelöst, indem ich eine .Net-Referenzsuchmaschinenfunktion verwendet habe, die auf der Registrierung basiert.

"HKEY_LOCAL_MACHINE \ SOFTWARE \ Wow6432Node \ Microsoft.NETFramework \ v2.0.50727 \ AssemblyFoldersEx"

Sie können einen Unterschlüssel erstellen und den Standardschlüssel beispielsweise auf "c: \ myreferenceedir" setzen.

Es hat mich mit MVC-Versionen und auch ASP.net-Webseiten gerettet.

Nützlich, um Verweise auf das Dialogfeld "Verweis hinzufügen" hinzuzufügen

http://dhakshinamoorthy.wordpress.com/2011/12/04/how-to-register-your-net-assembly-in-gac-and-make-it-show-in-add-reference-dialog/

Jenzo
quelle
0

Wie andere bereits erwähnt haben, fügen Sie diese Referenzen zu visuellen Studios mit dem Copy LocalSet to hinzu true. (Ich musste auch hinzufügen System.Web.Webpages)

Microsoft.Web.Infrastructure
System.Web.Razor
System.Web.WebPages.Deployment
System.Web.WebPages.Razor
System.Web.Webpages
roo2
quelle
0

Ich habe "Microsoft ASP.NET Razor" mithilfe von NuGet-Paketen verwalten hinzugefügt.

Mit Referenzen hinzufügen hatte ich aus irgendeinem Grund nur System.Web.Helpers 1.0.0 und 2.0.0 ... aber nicht 3.0.0.

Eine andere Option, die von mir aus funktioniert hat, war, die Verweise auf System.Web.Mvc und System.Web.Http ... zu löschen und sie dann erneut zu den Paketpositionen in der csproj-Datei hinzuzufügen (Sie können das Projekt am einfachsten mit bearbeiten ein Texteditor):

<Reference Include="System.Web.Http">
  <HintPath>..\packages\Microsoft.AspNet.WebApi.Core.5.2.3\lib\net45\System.Web.Http.dll</HintPath>

<Reference Include="System.Web.Mvc, Version=5.2.3.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL">
  <HintPath>..\packages\Microsoft.AspNet.Mvc.5.2.3\lib\net45\System.Web.Mvc.dll</HintPath>
Brian Rice
quelle