Ich habe versucht, meine Website auf einen Server hochzuladen. Es funktionierte einwandfrei mit meinem lokalen Host. Daher habe ich alles in den Ordner localhost wwwroot
auf den Server hochgeladen und die Verbindungszeichenfolge geändert.
Aber es gibt diesen Fehler:
Exception information:
Exception type: InvalidOperationException
Exception message: The pre-application start initialization method Start on type RouteDebug.PreApplicationStart threw an exception with the following error message: Could not load file or Assembly 'Microsoft.Web.Infrastructure, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35' or one of its dependencies. The system cannot find the file specified..
at System.Web.Compilation.BuildManager.InvokePreStartInitMethods(ICollection`1 methods)
at System.Web.Compilation.BuildManager.CallPreStartInitMethods()
at System.Web.Hosting.HostingEnvironment.Initialize(ApplicationManager appManager, IApplicationHost appHost, IConfigMapPathFactory configMapPathFactory, HostingEnvironmentParameters hostingParameters, PolicyLevel policyLevel, Exception appDomainCreationException)
Could not load file or Assembly 'Microsoft.Web.Infrastructure, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35' or one of its dependencies. The system cannot find the file specified.
at RouteDebug.PreApplicationStart.Start()
Das Projekt war nopcommerce
.
Was ist zu tun, um diesen Fehler zu beheben?
Sie müssen die DLL in Ihr Projekt einfügen und auch einen Verweis darauf hinzufügen.
Hier ist ein Link zu einem ähnlichen Problem, das sich bereits auf Stack befindet: MVC3 Probleme bei der Bereitstellungsabhängigkeit
Ich fand heraus, dass die Assembly nicht zum Projekt hinzugefügt wurde, obwohl es auf meiner Entwicklungsbox funktionierte. Suchen Sie in NuGet nach Microsoft.Web.Infrastructure und installieren Sie es von dort aus. Vergewissern Sie sich dann, dass "Lokal kopieren" ausgewählt ist.
Nach einer Referenzreinigung stellte sich heraus, dass Microsoft.Web.Infrastructure
entfernt wurde, jedoch nicht aus der packages.config-Datei. Nach dem erneuten Hinzufügen mit Package Manager Console
sagt Visual Studio, dass es bereits installiert ist. Dies ist false, da es entfernt wurde.
Ich habe dann die Codezeile in der packages.config
-Datei entfernt
<package id="Microsoft.Web.Infrastructure" version="1.0.0.0" targetFramework="net45" />
und führte den Befehl erneut aus
PM> Install-Package Microsoft.Web.Infrastructure
Danach funktioniert es jetzt gut.
Installieren Sie AspNetMVC3ToolsUpdateSetup, das von here heruntergeladen wurde, um dieses Problem zu lösen, ohne einen Verweis hinzuzufügen
Trotz der Anzahl der Antworten füge ich noch eine hinzu, was IMHO die Dinge etwas klarer macht.
Da Rob und wrightmail bereits erwähnt Microsoft.Web.Infrastructure
ein NuGet-Paket ist (Link nicht erforderlich, Sie haben es im NuGet Package Manager).
Anscheinend wurde es von Ihrem Projekt referenziert und verschwand plötzlich. Es gibt eine Reihe von Gründen, aber es ist wichtig, dass Sie Automatische Paketwiederherstellung in Visual Studio aktiviert haben von:
bei bestimmten Paketen ist möglicherweise eine manuelle Neuinstallation erforderlich. Mir ist nicht bewusst, was NuGet verwirrt, eine Referenz möglicherweise manuell zu entfernen, aber hier ist die Lösung, die ich normalerweise in solchen Fällen verwende. Die folgende PM - Konsole hilft beim Wiederherstellen eines Pakets, während die ursprüngliche Version beibehalten wird (keine Aktualisierung auf möglicherweise vorhandene neue):
Update-Paket Microsoft.Web.Infrastructure -Reinstall
Die Versionserhaltung kann erforderlich sein, wenn Sie ein vorhandenes Paket nicht versehentlich mit seiner neueren Version überschreiben möchten, wodurch möglicherweise "alte" Funktionen entfernt werden, die Sie möglicherweise in Ihrem Projekt verwendet haben.
Und als Beweis dafür, dass sich die Version trotz einiger Zeit nicht ändert, ist hier die Ausgabe, wenn der Befehl ausgeführt wird:
PM> Update-Package Microsoft.Web.Infrastructure -Reinstall
Attempting to gather dependencies information for multiple packages with respect to project 'Samples.NuGet\DemoApp\DemoApp', targeting '.NETFramework,Version=v4.5.2'
Attempting to resolve dependencies for multiple packages
Resolving actions install multiple packages
...
Package removal starts here...
...
Removed package 'Microsoft.AspNet.Web.Optimization 1.1.3' from 'packages.config'
Successfully uninstalled 'Microsoft.AspNet.Web.Optimization 1.1.3' from DemoApp
Removed package 'WebGrease 1.5.2' from 'packages.config'
Executing script file 'D:\Projects\DemoApp\packages\WebGrease.1.5.2\tools\uninstall.ps1'
Successfully uninstalled 'WebGrease 1.5.2' from DemoApp
...
More package removals here. Omitted for brevity...
...
Removed package 'Microsoft.Web.Infrastructure 1.0.0.0' from 'packages.config'
Successfully uninstalled 'Microsoft.Web.Infrastructure 1.0.0.0' from DemoApp
...
More package removals here. Omitted for brevity...
...
Removed package 'Antlr 3.4.1.9004' from 'packages.config'
Successfully uninstalled 'Antlr 3.4.1.9004' from MvcLenseApp
Package 'Antlr.3.4.1.9004' already exists in folder 'D:\Projects\Lense.Mvc5\packages'
--- Install packages (in reverse order) ---
Package 'Antlr.3.4.1.9004' already exists in folder 'D:\Projects\DemoApp\packages'
Added package 'Antlr.3.4.1.9004' to 'packages.config'
Successfully installed 'Antlr 3.4.1.9004' to DemoApp
...
More package installs here. Omitted for brevity...
...
Package 'Microsoft.Web.Infrastructure.1.0.0' already exists in folder 'D:\Projects\Lense.Mvc5\packages'
Added package 'Microsoft.Web.Infrastructure.1.0.0' to 'packages.config'
Successfully installed 'Microsoft.Web.Infrastructure 1.0.0' to MvcLenseApp
...
More package installs here. Omitted for brevity...
...
Package 'WebGrease.1.5.2' already exists in folder 'D:\Projects\DemoApp\packages'
Added package 'WebGrease.1.5.2' to 'packages.config'
Executing script file 'D:\Projects\DemoApp\packages\WebGrease.1.5.2\tools\install.ps1'
Successfully installed 'WebGrease 1.5.2' to DemoApp
Package 'Microsoft.AspNet.Web.Optimization.1.1.3' already exists in folder 'D:\Projects\DemoApp\packages'
Added package 'Microsoft.AspNet.Web.Optimization.1.1.3' to 'packages.config'
...
End of package re-install.
...
Successfully installed 'Microsoft.AspNet.Web.Optimization 1.1.3' to DemoApp
PM>
Wenn Sie alle Pakete neu installieren möchten, müssen Sie sich natürlich mit den update/install-Befehlen in NuGet here und here vertraut machen.
Resharper hat Microsoft.Web.Infrastructure als ungenutzte Referenz erkannt und daher gelöscht. Lokal funktionierte gut, aber dann bekam ich den gleichen Fehler nach dem Veröffentlichen an dev.
Fazit: Vorsicht, wenn Sie Referenzen löschen, die von Resharper als nicht verwendet markiert wurden
Installieren Sie Web Platform von https://www.Microsoft.com/web/platform/ .
Ich hoffe es hilft.
Dieses Problem ist auf einem neuen Windows 10-Computer auf VS2015 mit einem vorhandenen Projekt aufgetreten . Package Manager 3.4.4 . Wiederherstellen von Paketen aktiviert.
Die Wiederherstellung scheint nicht vollständig zu funktionieren . Mußte Folgendes in der Package Manager-Befehlszeile ausführen
Update-Package -ProjectName "YourProjectName" -Id Microsoft.Web.Infrastructure -Reinstall
Dies hat die folgenden Änderungen an meiner Lösungsdatei vorgenommen, die durch die Wiederherstellung NICHT ausgeführt wurden.
<Reference Include="Microsoft.Web.Infrastructure, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL"> <HintPath>..\packages\Microsoft.Web.Infrastructure.1.0.0.0\lib\net40\Microsoft.Web.Infrastructure.dll</HintPath> <Private>True</Private> </Reference>
Durch Hinzufügen der obigen Elemente zum Abschnitt ItemGroup in Ihrer Lösungsdatei wird das Problem AUCH gelöst, vorausgesetzt, dass ..\packages\Microsoft.Web.Infrastructure.1.0.0.0\lib\net40\Microsoft.Web.Infrastructure.dll vorhanden ist.
Es ist einfacher, einfach die -Reinstall-Installation durchzuführen, aber es ist gut zu verstehen, was es anders macht als die Wiederherstellung des Pakets.
Ich hatte ein ähnliches Problem. NuGet zeigte das Paket erfolgreich installiert an, aber die Referenz wurde meinem Projekt nicht hinzugefügt.
Das Ausführen von <PM> Install-Package Microsoft.Web.InfraStructure
hat auch nicht geholfen, da der Paketmanager immer wieder sagte, er sei bereits installiert
Ich habe es schließlich manuell hinzugefügt, indem ich die csproj-Datei bearbeitet und diese Zeilen hinzugefügt habe:
<Reference Include="Microsoft.Web.Infrastructure">
<HintPath>..\packages\Microsoft.Web.Infrastructure.1.0.0.0\lib\net40\Microsoft.Web.Infrastructure.dll</HintPath>
<Private>True</Private>
</Reference>
Das hat das Problem gelöst.
Für mich fehlte Microsoft.Web.Infrastructure.dll
im Ordner bin, es war nicht festgelegt, lokal im Projekt zu kopieren.
Sie müssen das ASP.NET MVC-Framework auf dem Server herunterladen, auf dem sich Ihre Anwendung befindet. Es ist eine schnelle Lösung, die Sie hier herunterladen und installieren müssen (Dies ist das MVC 3-Framework http://www.asp.net/mvc/mvc3 ).
Ich weiß nicht, was mit meinem Projekt passiert ist, aber es verweist auf den falschen Pfad zur DLL. Nuget hat es richtig installiert und es lag zwar in meinem Dateisystem zusammen mit den anderen Paketen, wurde aber nur falsch referenziert.
Der packages
-Ordner besteht zwei Verzeichnisse aus meinem Projekt und wurde erst durch das Starten des Pfads mit ..\packages\
nach oben verschoben. Ich habe den Pfad geändert, um mit ..\..\packages\
zu beginnen, und das Problem wurde behoben.
Entfernen Sie zuerst Microsoft.Web.Infrastructure aus package.config.
und führte den Befehl erneut aus
PM> Install-Package Microsoft.Web.Infrastructure Und stellen Sie sicher, dass die Copy Local-Eigenschaft auf true festgelegt ist.
Sehr einfache Lösung:
Wechseln Sie in Visual Studio zu Tools/Library Package Manager/Package Manager Console
<PM> Install-Package Microsoft.Web.InfraStructure
Viel Spaß
Hier war mein Szenario.
Ich hatte eine Multiprojektlösung, die die Projekte A, B, C und N enthielt. N.
Projekt B war eine Codebibliothek, die eine Factory für selectlist
-Objekte enthielt.
Das Projekt würde in der Entwicklung wie erwartet laufen, aber bei der Veröffentlichung in unserer Testumgebung wurde mir der Fehler gemeldet, auf den Sie stießen:
Could not load file or Assembly 'Microsoft.Web.Infrastructure, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35' or one of its dependencies. The system cannot find the file specified.
Was passiert war, war durch den Paketmanager von Nuget. Ich hatte versehentlich "Microsoft ASP.NET MVC" installiert, um Abhängigkeiten für Folgendes zu installieren:
Niedrig und siehe, Microsoft.AspNet.WebPages hängt von "Microsoft.Web.Infrastructure" ab.
Meine Lösung deinstallierte die drei oben genannten Pakete (MVC, Razor, WebPages). Klicken Sie dann mit der rechten Maustaste auf Referenzen> Referenz hinzufügen> Assemblies> Erweiterungen> System.Web.MVC.
In einigen Fällen können solche Fehler behoben werden, indem Sie das Projekt/die Projektmappe bereinigen, bin/
und obj/
physisch entfernen und neu erstellen. Dies kann beispielsweise passieren, wenn einige Pakete und Referenzen installiert/hinzugefügt und dann entfernt werden und einige Artefakte zurückbleiben.
Es passierte mir mit Microsoft.Web.Infrastructure
: Anfangs erforderte das Projekt diese Versammlung nicht. Nach einigen Experimenten, deren Nettoeffekt am Ende Null sein sollte, bekam ich diese Ausnahme. Die oben genannten Schritte lösten das Problem, ohne dass nicht verwendete Abhängigkeiten installiert werden mussten.