Ich habe versucht, meine Website auf einen Server hochzuladen. Es funktionierte gut mit meinem lokalen Host, also habe ich alles in meinem localhost- wwwroot
Ordner auf den Server hochgeladen und die Verbindungszeichenfolge geändert.
Aber da ist dieser 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?
c#
asp.net-mvc
user1348351
quelle
quelle
Antworten:
Sie müssen die DLL in Ihr Projekt aufnehmen und auch einen Verweis darauf hinzufügen.
Hier ist ein Link zu einem ähnlichen Problem, das bereits bei Stack: MVC3 Deployment Dependency Problems aufgetreten ist
quelle
Es stellt sich heraus, dass es nach einer Referenzreinigung entfernt wurde
Microsoft.Web.Infrastructure
, jedoch nicht aus der Datei packages.config. Nach dem erneuten Versuch, es mithilfe von hinzuzufügenPackage Manager Console
, gibt Visual Studio an, dass es bereits installiert ist. Dies ist falsch, 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
Danach funktioniert es jetzt gut.
quelle
Die Installation von AspNetMVC3ToolsUpdateSetup, das von hier heruntergeladen wurde , würde dieses Problem lösen, ohne einen Verweis hinzuzufügen
quelle
Trotz der Anzahl der Antworten werde ich eine weitere hinzufügen, die meiner Meinung nach die Dinge etwas klarer macht.
Wie Rob und Wrightmail bereits erwähnt haben,
Microsoft.Web.Infrastructure
handelt es sich um ein NuGet-Paket (Link nicht erforderlich, Sie haben ihn im NuGet-Paket-Manager).Anscheinend wurde es von Ihrem Projekt referenziert und verschwand plötzlich. Es kann eine Reihe von Gründen geben, aber das Wichtigste ist, dass Sie die automatische Paketwiederherstellung in Visual Studio möglicherweise aktiviert haben, indem Sie:
Bestimmte Pakete erfordern möglicherweise eine manuelle Neuinstallation. Mir ist nicht bekannt, was NuGet verwirrt, möglicherweise wird eine Referenz manuell entfernt, aber hier ist die Lösung, die ich normalerweise in solchen Fällen anwende. Die folgende PM-Konsole hilft beim Wiederherstellen eines Pakets unter Beibehaltung der Originalversion (keine Aktualisierung auf möglicherweise vorhandene neue):
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 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 möglicherweise hier und hier mit den Aktualisierungs- / Installationsbefehlen in NuGet vertraut machen .
quelle
Ich stellte fest, dass die Baugruppe nicht zum Projekt hinzugefügt wurde, obwohl sie auf meiner Entwicklungsbox funktionierte. Suchen Sie in NuGet nach Microsoft.Web.Infrastructure und installieren Sie es von dort aus. Stellen Sie dann sicher, dass Copy Local ausgewählt ist.
quelle
Dieses Problem trat auf einem neuen Windows 10-Computer unter VS2015 mit einem vorhandenen Projekt auf. Paketmanager 3.4.4. Wiederherstellungspakete aktiviert.
Die Wiederherstellung scheint nicht vollständig zu funktionieren. Musste folgendes in der Package Manager-Befehlszeile ausführen
Update-Package -ProjectName "YourProjectName" -Id Microsoft.Web.Infrastructure -Reinstall
Dadurch wurden die folgenden Änderungen an meiner Lösungsdatei vorgenommen, die bei der Wiederherstellung NICHT durchgeführt wurden.
Durch einfaches Hinzufügen der oben genannten Elemente zum Abschnitt ItemGroup in Ihrer Lösungsdatei wird AUCH das Problem behoben, sofern .. \ packages \ Microsoft.Web.Infrastructure.1.0.0.0 \ lib \ net40 \ Microsoft.Web.Infrastructure.dll vorhanden ist.
Es ist einfacher, nur die Neuinstallation durchzuführen, aber es ist gut zu verstehen, was es anders macht als die Paketwiederherstellung.
quelle
Resharper hat Microsoft.Web.Infrastructure als nicht verwendete Referenz erkannt und daher gelöscht. Vor Ort funktionierte gut, aber dann bekam ich den gleichen Fehler nach der Veröffentlichung auf dev.
Fazit: Seien Sie vorsichtig, wenn Sie Referenzen löschen, die von Resharper als nicht verwendet markiert wurden
quelle
Versuchen Sie, die Webplattform unter https://www.microsoft.com/web/platform/ zu installieren.
Ich hoffe es hilft.
quelle
Ich hatte ein ähnliches Problem. NuGet zeigte, dass das Paket erfolgreich installiert wurde, aber die Referenz wurde meinem Projekt nicht hinzugefügt.
Das Ausführen
<PM> Install-Package Microsoft.Web.InfraStructure
half auch nicht, da der Paketmanager immer wieder sagte, dass es bereits installiert istIch habe es schließlich manuell hinzugefügt, indem ich die csproj-Datei bearbeitet und folgende 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.
quelle
Sie müssen das ASP.NET MVC-Framework auf den Server herunterladen, auf dem sich Ihre Anwendung befindet. Es ist eine schnelle Lösung, die Sie einfach von hier herunterladen und installieren können (dies ist das MVC 3-Framework http://www.asp.net/mvc/mvc3 ). Dann können Sie loslegen.
quelle
Für mich
Microsoft.Web.Infrastructure.dll
fehlte im bin-Ordner, es war nicht so eingestellt, dass es lokal im Projekt kopiert. Kopierte die DLL aus einem anderen Projekt in die Lösung und die Seite wird geladen.quelle
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 Eigenschaft Copy Local wahr ist.
quelle
Sehr einfache Lösung:
Wechseln Sie in Visual Studio zu Tools / Library Package Manager / Package Manager Console
Viel Spaß
quelle
Hier war mein Szenario.
Ich hatte eine Multiprojektlösung mit den Projekten A, B, C .. N.
Projekt B war eine Codebibliothek, die eine Fabrik für
selectlist
Objekte enthielt .Das Projekt würde in der Entwicklung wie erwartet ausgeführt, aber beim Veröffentlichen in unserer Testumgebung wurde der folgende Fehler angezeigt:
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 über den Nuget-Paket-Manager. Ich hatte versehentlich "Microsoft ASP.NET MVC" installiert, das Abhängigkeiten für Folgendes installierte:
Niedrig und siehe da, Microsoft.AspNet.WebPages hängt von "Microsoft.Web.Infrastructure" ab.
Meine Lösung bestand darin, die drei oben genannten Pakete (MVC, Razor, WebPages) zu deinstallieren und dann mit der rechten Maustaste auf Referenzen> Referenz hinzufügen> Baugruppen> Erweiterungen> System.Web.MVC zu klicken.
quelle
Ich musste "Copy Local" in den Referenzeigenschaften auf "False" und dann wieder auf "True" setzen. Dadurch wurde der .csproj-Datei die Einstellung Private True hinzugefügt.
<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>
Ich hatte angenommen, dass dies bereits eingestellt war, da "Copy Local" als True angezeigt wurde.
quelle
Ich weiß nicht, was mit meinem Projekt passiert ist, aber es hat auf den falschen Pfad zur DLL verwiesen. Nuget hat es richtig installiert und es war zwar auf meinem Dateisystem zusammen mit den anderen Paketen, aber nur falsch referenziert.
Der
packages
Ordner enthält zwei Verzeichnisse aus meinem Projekt und es wurde nur eines nach oben verschoben, indem der Pfad mit gestartet wurde..\packages\
. Ich habe den Pfad geändert..\..\packages\
und mein Problem behoben.quelle
Auf meinem Computer wurde die Nuget-Abhängigkeit nicht korrekt heruntergeladen, der lib-Ordner im Nuget-Paket war nicht vorhanden, daher der Fehler.
Vor
Ich habe das Nuget-Paket im Paketordner umbenannt und Nuget hat es korrekt mit dem erforderlichen lib-Ordner heruntergeladen.
Nach
quelle
In einigen Fällen das Projekt / die Reinigungslösung, physikalisch zu entfernen
bin/
undobj/
und Wiederaufbau würde solche Fehler beheben. 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 Montage nicht. Nach einigen Experimenten, deren Nettoeffekt am Ende Null sein sollte, bekam ich diese Ausnahme. Die oben genannten Schritte haben das Problem behoben, ohne dass nicht verwendete Abhängigkeiten installiert werden müssen.quelle
Ich hatte dieses Problem. Ich hatte die DLL in das Projekt aufgenommen und die Einstellung zum Kopieren von Lokal war standardmäßig wahr. Ich weiß nicht, warum es angefangen hat, da diese DLL schon lange im Projekt war. Ich habe einige Erwähnungen gehört, dass ReSharper es möglicherweise entfernt, aber ich kann nicht sagen, dass ich eine nicht verwendete Referenzentfernung durchgeführt habe.
Was mir geholfen hat, war: - Ausführen des "Update-Pakets Microsoft.Web.Infrastructure -Reinstall" für das Projekt, das die gesamte Lösung aktualisiert hat, aber nicht an und für sich geholfen hat. - Dann habe ich die Referenzen der Projekte durchgesehen und Copy Local auf false und dann wieder auf true gesetzt. Dies führte tatsächlich dazu, dass eine Zeile in die CSPROJ-Datei unter der DLL-Referenz True hinzugefügt wurde. Oder etwas in der Art ... So oder so, jetzt kopierte der Build die Dateien wie erwartet.
quelle
Also, hier ist, was für mich mit VS2019 funktioniert hat. Beim Versuch, Nuget-Pakete für ein Projekt zu aktualisieren, wurde diese Fehlermeldung angezeigt, während sich die Microsoft.Web.Infrastructure in einem anderen Projekt in derselben Lösung befand. Ich musste den Ordner Microsoft.Web.Infrastructure.1.0.0.0 aus dem Ordner Packages meines Projekts löschen. Installierte es über Nuget neu und dann fing alles wieder an zu funktionieren. Verrücktes Zeug.
quelle