2016-06-08 1 views
0

zu verwenden. Ich baue einen WebApi-Endpunkt und ich habe ihn lokal getestet und er funktioniert gut. Ich habe es auf einem Server installiert und auf einen anderen Dienst hingewiesen, aber wenn es versucht, eine Anfrage zu senden, erhalte ich einen Laufzeitfehler. Wenn ich überprüfen Sie die Ereignisanzeige, dass mein Endpunkt ist auf ich diesen Fehler gefunden:Konnte die Datei oder Assembly System.Web.Mvc nicht laden, wenn ich versuche, den Endpunkt

Exception type: InvalidOperationException 
Exception message: The pre-application start initialization method PreAppStart on type Microsoft.Web.Mvc.ViewEngineFix threw an exception with the following error message: Could not load file or assembly 'System.Web.Mvc, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35' or one of its dependencies. The system cannot find the file specified.. 
at System.Web.Compilation.BuildManager.InvokePreStartInitMethodsCore(ICollection`1 methods, Func`1 setHostingEnvironmentCultures) 
at System.Web.Compilation.BuildManager.InvokePreStartInitMethods(ICollection`1 methods) 
at System.Web.Compilation.BuildManager.CallPreStartInitMethods(String preStartInitListPath, Boolean& isRefAssemblyLoaded) 
at System.Web.Compilation.BuildManager.ExecutePreAppStart() 
at System.Web.Hosting.HostingEnvironment.Initialize(ApplicationManager appManager, IApplicationHost appHost, IConfigMapPathFactory configMapPathFactory, HostingEnvironmentParameters hostingParameters, PolicyLevel policyLevel, Exception appDomainCreationException) 

Could not load file or assembly 'System.Web.Mvc, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35' or one of its dependencies. The system cannot find the file specified. 
at Microsoft.Web.Mvc.ViewEngineFix.PreAppStart() 

ich versucht habe, die Versionsnummer in der web.config ändern und haben sogar versucht, ein Referenzverzeichnis zu machen, die von nuget verwaltet isnt zu halten die System.Web.Mvc.dll, aber das hat auch nicht funktioniert.

Jede Hilfe wird sehr geschätzt!

+0

Es sieht irgendwie so aus, wenn ich die Lösung baue, um es auf den Server zu stellen, wird das System.Web.Mvc nicht in das Bin kopiert, wo die Lösung es erwartet. Jetzt schau ich mir das an. – SketchyTurtle

Antwort

0

Das Problem bestand also darin, dass die "fehlenden" DLLs fehlten, weil sie nicht in den bin-Ordner kopiert wurden, als der Release-Build auftrat. Ich habe this verwandte Frage gefunden und ich habe Vorschläge aus der Antwort verwendet.

TLDR; Im Grunde, wie ich es behoben habe, war es, jede DLL manuell zu kopieren, da sie sagte, dass sie fehlte, und zu verfolgen, welche man bewegen musste; in meinem Fall waren es 4 dlls.

Nachdem die gleiche "Missing" -Ausnahme nicht ausgelöst wurde, gehen Sie durch die Dropdown-Liste der Projektverweise und suchen Sie in der Registerkarte "Eigenschaften" die Zeile "Copy Local" und setzen Sie diese für jede fehlende Referenz auf True.

Um zu überprüfen, was erwartet wurde, klicken Sie mit der rechten Maustaste auf das Projekt und klicken Sie auf Entladen. Klicken Sie dann mit der rechten Maustaste erneut auf das Projekt und bearbeiten Sie die Datei csproj. Finden Sie Ihre fehlenden Referenzen und stellen Sie unter dem "Hint Pfad" sicher, dass es ein <Private>True</Private> Feld hat. Laden Sie das Projekt neu, stellen Sie sicher, dass es erstellt wird, und versuchen Sie es dann erneut, und die DLLs sollten sich nun im Ordner "bin" befinden.

+0

Hier ist eine ähnliche Lösung http://haacked.com/archive/2008/11/03/bin-deploy-aspnetmvc.aspx/ – SketchyTurtle

Verwandte Themen