Ich habe eine kleine Webanwendung. Das hat gut funktioniert, bis ich zwei genericHandler in meine Anwendung aufgenommen habe.
Ich habe die folgenden Änderungen für den http-Handler vorgenommen
<system.web>
<authentication mode="Forms" >
<forms protection="All" timeout="720" defaultUrl="Default.aspx" loginUrl="Login.aspx" >
</forms>
</authentication>
<authorization>
<deny users="?"/>
</authorization>
<compilation debug="true" targetFramework="4.0" />
<httpHandlers>
<!--Code Log Handler-->
<add verb="*" path="*.aspx" type="System.Web.UI.PageHandlerFactory" />
<add verb="*" type="InfoDomeNewUI.Handler.SendOWA" path="SendOWA.ashx" />
<add verb="*" type="InfoDomeNewUI.Handler.SendSOS" path="SendSOS.ashx" />
</httpHandlers>
<customErrors mode="Off">
<error statusCode="404" redirect="Templates/PageNotFound.html" />
</customErrors>
</system.web>
<system.webServer>
<validation validateIntegratedModeConfiguration="false" />
<handlers>
<!--Code Log Handler-->
<add name="LogHandler1" path="SendOWA.ashx" verb="*" type="InfoDomeNewUI.Handler.SendOWA"/>
<!-- SMS SENDER-->
<add name="SendSOS" path="SendSOS.ashx" verb="*" type="InfoDomeNewUI.Handler.SendSOS"/>
</handlers>
</system.webServer>
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.
Ich benutze asp.net4.0 und C #. Ich verwende MVC nicht.
Auf dem lokalen Host funktioniert es einwandfrei.
Aber wenn ich den veröffentlichten Code hoste, gibt es mir den obigen Fehler.
Stapelverfolgung: -
[FileNotFoundException: Datei oder Assembly 'Microsoft.Web.Infrastructure, Version = 1.0.0.0, Culture = neutral, PublicKeyToken = 31bf3856ad364e35' oder eine ihrer Abhängigkeiten konnte nicht geladen werden. Das System kann die angegebene Datei nicht finden.] System.Web.Http.WebHost.SuppressFormsAuthRedirectModule.Register () +0
[InvalidOperationException: Die Initialisierungsmethode Start vor der Anwendung Start vom Typ System.Web.Http.WebHost.PreApplicationStartCode hat eine Ausnahme mit der folgenden Fehlermeldung ausgelöst: Datei oder Assembly 'Microsoft.Web.Infrastructure, Version = 1.0.0.0, konnte nicht geladen werden. Kultur = neutral, PublicKeyToken = 31bf3856ad364e35 'oder eine seiner Abhängigkeiten. Das System kann die angegebene Datei nicht finden.] System.Web.Compilation.BuildManager.InvokePreStartInitMethods (ICollection`1-Methoden) +11708830 System.Web.Compilation.BuildManager.CallPreStartInitMethods () +465 System.Web.Hosting.HostingEnvironment.nvironment. ApplicationManager appManager, IApplicationHost appHost, IConfigMapPathFactory configMapPathFactory, HostingEnvironmentParameters HostingParameters, PolicyLevel policyLeve
[HttpException (0x80004005): Die Initialisierungsmethode Start vor der Anwendung Start vom Typ System.Web.Http.WebHost.PreApplicationStartCode hat eine Ausnahme mit der folgenden Fehlermeldung ausgelöst: Datei oder Assembly 'Microsoft.Web.Infrastructure, Version = 1.0 konnte nicht geladen werden .0.0, Culture = neutral, PublicKeyToken = 31bf3856ad364e35 'oder eine seiner Abhängigkeiten. Das System kann die angegebene Datei nicht finden.] System.Web.HttpRuntime.FirstRequestInit (HttpContext-Kontext) +11697760 System.Web.HttpRuntime.EnsureFirstRequestInit (HttpContext-Kontext) +141 System.Web.HttpRuntime. +4866485
Antworten:
Es scheint, dass Microsoft.Web.Infrastructure.dll nicht im GAC installiert wird, selbst wenn .net (4.0 oder 4.5 oder andere) erfolgreich unter Windows Server installiert wurde. Auf localhost (normalerweise Windows-Client) scheint es sich im GAC zu befinden, wenn die Tools / Plattform (Visual Studio usw.) installiert sind.
Versuchen Sie als mögliche Lösung Folgendes:
Führen Sie den folgenden Befehl in der Package Manager-Konsole aus. (Wenn Sie Visual Studio verwenden, können Sie dies über die Menüoptionen "Extras -> Bibliothekspaket-Manager -> Paketmanager-Konsole :) erreichen.
Die folgenden Meldungen werden angezeigt, wenn die Installation erfolgreich war.
Sie werden das bemerken Microsoft.Web.Infrastructure.dll jetzt als Referenz hinzugefügt wurde (im Referenzordner Ihres Projekts im Projektmappen-Explorer zu sehen).
Wenn Sie sich die Eigenschaften dieser Referenz ansehen, werden Sie feststellen, dass " Lokal kopieren " " standardmäßig auf " Wahr " gesetzt ist.
Wenn Sie nun Ihr Projekt "veröffentlichen", wird Microsoft.Web.Infrastructure.dll bereitgestellt.
quelle
Ich habe MVC4 über WPI installiert und es hat mir geholfen.
quelle
Ich hatte das gleiche Problem. Als ich die akzeptierte Antwort (rockyb) ausprobierte, erhielt ich die Meldung, dass das Paket bereits installiert und meinem Projekt zugewiesen wurde. Als ich die Referenzliste überprüfte, wurde sie jedoch NICHT referenziert.
Die Microsoft.Web.Infrastructure wurde im Paketordner meiner Lösung installiert. Anstatt NuGet zum Hinzufügen des Pakets zu verwenden, habe ich nur die Option Referenz hinzufügen verwendet. Auf der linken Seite des Popup-Fensters habe ich Durchsuchen ausgewählt und dann die Schaltfläche Durchsuchen unten im Fenster gedrückt. Ich navigierte zu dem Paketordner unter dem Ordner, in dem sich meine Lösung befand, und führte einen Drilldown zu ... \ mysolution \ packages \ Microsoft.Web.Infrastructure.1.0.0.0 \ lib \ net40 durch und klickte auf Microsoft.Web.Infrastructure .dll. Nachdem Sie auf OK geklickt haben, wurde das Paket in meiner Referenzliste angezeigt. Ich habe die Option Web Deploy Package verwendet, um meine Website bereitzustellen, und alles hat funktioniert.
quelle
Kopieren Sie die Datei Microsoft.Web.Infrastructure.dll manuell in den Server-BIN-Ordner. Das funktioniert für. Mein Projekt ist VS2010 Website.
Diese Datei kann gefunden werden:
C: \ Programme (x86) \ Microsoft ASP.NET \ ASP.NET MVC 4 \ Packages \ Microsoft.Web.Infrastructure.1.0.0.0 \ lib \ net40
Kopieren Sie es einfach und fügen Sie es in den BIN-Ordner ein.
Sie müssen dies wahrscheinlich in die web.config aufnehmen, wenn Sie es noch nicht haben
Referenz: http://thedeveloperblog.com/
quelle
Ich habe das Problem gefunden. Anstatt versehentlich eine Klassendatei hinzuzufügen,
(.cs)
hatte ich eineWeb API Controller
Klasse hinzugefügt, die meiner Lösung eine Konfigurationsdatei hinzufügte. Und diese Konfigurationsdatei suchte nach der erwähnten DLL (Microsoft.Web.Infrastructure 1.0.0.0). Es hat funktioniert, als ich diese Datei entfernt, die Anwendung bereinigt und dann veröffentlicht habe.quelle
Nach der Installation von Microsoft.Web.Infrastructure durch
Nuget-Package Manager
Kopieren Sie das
Microsoft.Web.Infrastructure.dll
manuell aus demNuget-Package
Ordner Ihrer Webanwendung und fügen Sie es dann in den Ordner bin Ihrer Webanwendung ein, die auf dem Webserver bereitgestellt wird.Es hat bei mir funktioniert.
quelle
Update-Package -reinstall Microsoft.Web.Infrastructure
hat bei mir nicht funktioniert, da ich immer wieder Fehler erhielt, dass es bereits installiert war.Ich musste zum Ordner Microsoft.Web.Infrastructure.1.0.0.0 im Paketordner navigieren und diesen Ordner manuell löschen.
Danach wird
Install-Package Microsoft.Web.Infrastructure
es ausgeführt.Hinweis:
CopyLocal
wurde automatisch auf true gesetzt.quelle
Ich hatte das gleiche Problem und die "Microsoft.Web.Infrastructure.dll" schien zu fehlen. Ich habe einige Ratschläge ausprobiert und MVCs usw. installiert, und nichts hat geholfen. Die Lösung bestand darin, "Web Services Enhancements (WSE) 1.0 SP1 für Microsoft .NET" zu installieren, das Microsoft.Web.Infrastructure.dll enthält. Verfügbar unter: http://www.microsoft.com/en-gb/download/details.aspx?id=4065
quelle
Ich hatte das gleiche Problem. Ich habe versucht, Visual Studio 2010 SP1 zu installieren, aber es hat nicht funktioniert.
Schließlich bekomme ich Microsoft.Web.Infrastructure.dll vom Kollegen. Sie finden die DLL auf dem PC Ihres Freundes, auf dem das Projekt perfekt funktioniert. Versuchen Sie, die DLL in temporäre / temporäre ASP.NET-Dateien zu durchsuchen. Gehen Sie mit% temp% in das Ausführungsfenster zu Temp.
Nachdem Sie die DLL in Ihren PC eingegeben haben, fügen Sie einfach einen Verweis auf Ihr Projekt hinzu, und es wird funktionieren.
quelle
Durch die erneute Veröffentlichung der Website wurde das Problem für mich behoben.
quelle
War mit dem gleichen Problem konfrontiert und leider funktionierte hier nichts. Schließlich bin ich auf diesen Link gestoßen : https://blogs.msdn.microsoft.com/jjameson/2009/11/18/the-copy-local-bug-in-visual-studio/
Es stellt sich heraus, dass die Lösung irgendwie dumm ist: Setzen Sie copy-local für die DLL microsoft.web.infrastructure auf False und setzen Sie sie dann wieder auf True.
Ich denke übrigens, es gibt zwei Versionen der DLL microsoft.web.infrastructure, eine, die im GAC vorinstalliert ist, und eine andere, die jetzt ein Nuget-Paket ist. Ich denke, einer maskiert den anderen und verursacht Probleme. In meinem speziellen Fall muss es auf meinem Build-Server in einen Ordner kopiert werden (dieser Ordner wird dann komprimiert und an die Bereitstellung gesendet). Ich denke, das System hatte eine Kopie vor Ort und dachte nur "nee, es wird gut"
quelle
Ich habe eine Website nur für Dateien. MVC 5 zur Webforms-Anwendung hinzugefügt (Targeting net45). Ich musste die packages.config ändern
zu
Damit es auf der lokalen Box im Debug-Modus gestartet werden kann (hatte zuvor den oben beschriebenen Fehler). Ausführen von VS 2017 unter Windows 7 ... geöffnet über Datei> Öffnen> Website> Datei (Stammverzeichnis außerhalb von IIS auswählen).
quelle
Ich hatte das gleiche Problem, nachdem ich einige NuGet-Pakete aktualisiert hatte.
Ich habe alle hier beschriebenen Arten des Löschens, Reinigens, Neuinstallierens und darüber hinaus ohne Erfolg versucht. Die Referenzen hatten keine Microsoft.Web.Infrastructure, obwohl der NuGet-Manager zeigte, dass sie installiert waren.
Das Problem wurde durch Ersetzen gelöst:
mit
in packages.config. Der Schuldige ist anscheinend "net45".
quelle