Nach der Installation von ASP.NET MVC 4 Beta auf einem Computer mit ASP.NET MVC 3 wird die folgende Ausnahme angezeigt.
System.InvalidCastException wurde vom Benutzercode Message = [A] System.Web.WebPages.Razor.Configuration.HostSection wurde nicht in [B] System.Web.WebPages.Razor.Configuration.HostSection umgewandelt. Typ A stammt aus 'System.Web.WebPages.Razor, Version = 1.0.0.0, Culture = neutral, PublicKeyToken = 31bf3856ad364e35' im Kontext 'Default' am Speicherort 'C: \ Windows \ Microsoft.Net \ Assembly \ GAC_MSIL \ System .Web.WebPages.Razor \ v4.0_1.0.0.0__31bf3856ad364e35 \ System.Web.WebPages.Razor.dll '. Typ B stammt aus 'System.Web.WebPages.Razor, Version = 2.0.0.0, Culture = neutral, PublicKeyToken = 31bf3856ad364e35' im Kontext 'Default' am Speicherort 'C: \ Windows \ Microsoft.Net \ Assembly \ GAC_MSIL \ System .Web.WebPages.Razor \ v4.0_2.0.0. 0__31bf3856ad364e35 \ System.Web.WebPages.Razor.dll '. Source = System.Web.WebPages.Razor
StackTrace:
at System.Web.WebPages.Razor.WebRazorHostFactory.GetRazorSection (String virtualPath) at System.Web.WebPages.Razor.WebRazorHostFactory.CreateHostFromConfig (String virtualPath, String PhysicalPath) at System.Web.WebPages.Raz.Raz.Razor System.Web.WebPages.Razor.RazorBuildProvider.CreateHost () unter System.Web.WebPages.Razor.RazorBuildProvider.EnsureGeneratedCode () unter System.Web.WebPages.Razor.RazorBuildProvider.omp.CodeComp. GetCompilerTypeFromBuildProvider (BuildProvider buildProvider) unter System.Web.Compilation.BuildProvidersCompiler.ProcessBuildProviders () unter System.Web.Compilation.BuildProvidersCompiler.PerformBuild () unter System.Web.Comp.CompileWebFile (VirtualPath virtualPath) bei System.Web.Compilation.BuildManager.GetVPathBuildResultInternal (VirtualPath virtualPath, Boolean noBuild, Boolean allowCrossApp, Boolean allowBuildInPrecompile, Boolean throwIfNotFound, Boolean ensureIsUpToDate) bei System.Web.Compilation.BuildManager.GetVPathBuildResultWithNoAssert (Httpcontext Zusammenhang VirtualPath virtualPath , Boolean noBuild, Boolean allowCrossApp, Boolean allowBuildInPrecompile, Boolean throwIfNotFound, Boolean sureIsUpToDate) bei System.Web.Compilation.BuildManager.GetVirtualPathObjectFactory Web.Mvc.IBuildManager.FileExists (String virtualPath) unter System.Web.Mvc.BuildManagerViewEngine.FileExists (ControllerContext controllerContext, String virtualPath) unter System.Web.Mvc.VirtualPathProviderViewEngine.GetPathFromGeneralName (ControllerContext controllerContext, List`1-Speicherorte, Stringname, String controllerName, String areaName, String cacheKey, String [] & searchedWocations). Mvc.VirtualPathProviderViewEngine.GetPath (ControllerContext controllerContext, String [] -Standorte, String [] areaLocations, String-StandortePropertyName, String-Name, String-Controller-Name, String-CacheKeyPrefix, Boolean useCache, String [] & searchedLocations) bei System.Web.Vir (ControllerContext controllerContext, String viewName, String masterName, Boolean useCache) bei System.Web.Mvc.ViewEngineCollection. <> C__DisplayClassc.b__b (IViewEngine e) bei System.Web.Mvc.ViewEngineCollection.Find (Func`2-Suche, Boolean trackSearchedPaths) bei System.Web.Mvc.ViewEngineCollection.FindView (ControllerContext controllerContext, String viewName, String masterName) bei System.Web .ViewResult.FindView (ControllerContext-Kontext) bei System.Web.Mvc.ViewResultBase.ExecuteResult (ControllerContext-Kontext) bei System.Web.Mvc.ControllerActionInvoker.InvokeActionResult (ControllerContext controllerContext, ActionResult actionResult) c__DisplayClass1c.b__19 () bei System.Web.Mvc.ControllerActionInvoker.InvokeActionResultFilter (IResultFilter-Filter, ResultExecutingContext preContext, Func`1-Fortsetzung) bei System.Web.Mvc.ControllerActionInvoker. <> c__D> c__DisplayClass1e.b__1b () bei System.Web.Mvc.ControllerActionInvoker.InvokeActionResultWithFilters (ControllerContext controllerContext, IList`1-Filter, ActionResult actionResult) bei System.Web.Mvc.ControllerActionInvoker.ControllerActionInvoker.ControllerActionInvoker. Mvc.Controller.ExecuteCore () unter [project_namespace] .Controllers.GlobalizationController.ExecuteCore () unter [file_path] unter System.Web.Mvc.ControllerBase.Execute (RequestContext requestContext) unter System.Web.Mvc.ControllerBase. Mvc.IController.Execute (RequestContext requestContext) bei System.Web.Mvc.MvcHandler. <> C__DisplayClass6. <> C__DisplayClassb.b__5 () bei System.Web.Mvc.Async.AsyncResultWrapper. <> C__DisplayClass1.b. Web.Mvc.Async.AsyncResultWrapper. <> C__DisplayClass8`1.b__7 (IAsyncResult _) bei System.Web.Mvc.Async.AsyncResultWrapper.WrappedAsyncResult`1.End () bei System.Web.Mvc.MvcHandler. <> C System.Web.Mvc.SecurityUtil.b__0 (Aktion f) unter System.Web.Mvc.SecurityUtil.ProcessInApplicationTrust (Aktionsaktion) unter System.Web.Mvc.MvcHandler.EndProcessRequest (IAsyncResult asyncResult) unter Systemc.MvM. System.Web.IHttpAsyncHandler.EndProcessRequest (IAsyncResult-Ergebnis) bei System.Web.HttpApplication.CallHandlerExecutionStep.System.Web.HttpApplication.IExecutionStep.Execute () bei System.Web.HttpecSecu.Web.Mvc.Async.AsyncResultWrapper.WrappedAsyncResult`1.End () bei System.Web.Mvc.MvcHandler. <> C__DisplayClasse.b__d () bei System.Web.Mvc.SecurityUtil.b__0 (Aktion f) bei System.Web. Mvc.SecurityUtil.ProcessInApplicationTrust (Aktionsaktion) bei System.Web.Mvc.MvcHandler.EndProcessRequest (IAsyncResult asyncResult) bei System.Web.Mvc.MvcHandler.System.Web.IHttpAsyncHandler.Er. CallHandlerExecutionStep.System.Web.HttpApplication.IExecutionStep.Execute () bei System.Web.HttpApplication.ExecuteStep (IExecutionStep-Schritt, Boolean & completeSynchronously)Web.Mvc.Async.AsyncResultWrapper.WrappedAsyncResult`1.End () bei System.Web.Mvc.MvcHandler. <> C__DisplayClasse.b__d () bei System.Web.Mvc.SecurityUtil.b__0 (Aktion f) bei System.Web. Mvc.SecurityUtil.ProcessInApplicationTrust (Aktionsaktion) bei System.Web.Mvc.MvcHandler.EndProcessRequest (IAsyncResult asyncResult) bei System.Web.Mvc.MvcHandler.System.Web.IHttpAsyncHandler.Er. CallHandlerExecutionStep.System.Web.HttpApplication.IExecutionStep.Execute () bei System.Web.HttpApplication.ExecuteStep (IExecutionStep-Schritt, Boolean & completeSynchronously)b__0 (Aktion f) bei System.Web.Mvc.SecurityUtil.ProcessInApplicationTrust (Aktionsaktion) bei System.Web.Mvc.MvcHandler.EndProcessRequest (IAsyncResult asyncResult) bei System.Web.Mvc.MvcHandler.System.Wep. IAsyncResult-Ergebnis) bei System.Web.HttpApplication.CallHandlerExecutionStep.System.Web.HttpApplication.IExecutionStep.Execute () bei System.Web.HttpApplication.ExecuteStep (IExecutionStep-Schritt, Boolean & completeSynously)b__0 (Aktion f) bei System.Web.Mvc.SecurityUtil.ProcessInApplicationTrust (Aktionsaktion) bei System.Web.Mvc.MvcHandler.EndProcessRequest (IAsyncResult asyncResult) bei System.Web.Mvc.MvcHandler.System.Wep. IAsyncResult-Ergebnis) bei System.Web.HttpApplication.CallHandlerExecutionStep.System.Web.HttpApplication.IExecutionStep.Execute () bei System.Web.HttpApplication.ExecuteStep (IExecutionStep-Schritt, Boolean & completeSynously)HttpApplication.IExecutionStep.Execute () bei System.Web.HttpApplication.ExecuteStep (IExecutionStep-Schritt, Boolean & completeSynchronously)HttpApplication.IExecutionStep.Execute () bei System.Web.HttpApplication.ExecuteStep (IExecutionStep-Schritt, Boolean & completeSynchronously)
Dies blockiert mich vollständig und obwohl ich die Beta behalten möchte, muss ich sie möglicherweise vollständig entfernen, um die Ausnahme zu beseitigen.
quelle
Antworten:
Versuchen Sie, Folgendes in Ihre web.config einzufügen:
Das Problem kann darauf zurückzuführen sein, dass mehrere Build-Anbieter registriert sind und der letzte Gewinn erzielt wurde.
quelle
Ich hatte das gleiche Problem, aber bei der Migration von ASP.NET MVC 3 zu ASP.NET MVC 4. Auf diese Weise kam ich zu diesem Thema. Ich habe eine Lösung für das Problem gefunden, aber die Quelle ist anders, es ist nicht von der
WebPages
Version.Ich habe die offizielle Anleitung (sozusagen) zum Aktualisieren eines ASP.NET MVC 3-Projekts auf ASP.NET MVC 4 befolgt .
Um das Problem zu beheben, müssen Sie in Web.Config hinzufügen (wahrscheinlich um zuvor hinzugefügte):
Auch in den Notizen wird nicht erwähnt, um die Referenz von System.Web.Helpers von 1.0.0.0 auf 2.0.0.0 zu ändern (löschen und die neue hinzufügen).
quelle
oldVersion="1.0.0.0-2.0.0.0"
nur die in der MVC4-Projektvorlage verwendete Konvention zu befolgen. Interessanterweise fehlt dasdependentAssembly
forSystem.Web.WebPages.Razor
auch in der Root- Datei Web.config in der MVC4-Projektvorlage.oldVersion="2.0.0.0" newVersion="3.0.0.0"
Noch eine, ziemlich späte Lösung ... Ich bin auf dasselbe Problem gestoßen. Habe alle hier aufgeführten Korrekturen durchgeführt (Danke an alle !!!), konnte aber den Fehler nicht überwinden. Schließlich fand ich verzweifelt eine web.config-Datei im Views-Verzeichnis. In dieser Datei habe ich mehrere Verweise auf die Version von System.Web.Mvc gefunden und alle auf "4.0.0.0" erhöht. Noch wichtiger ist, dass ich die folgenden Zeilen gefunden und die Versionsnummern für "system.web.webPages.Razor" von "1.0.0.0" auf "2.0.0.0" aktualisiert habe und plötzlich alles wieder funktionierte. Hoffentlich hilft das jemand anderem.
Steve G.
quelle
Ich habe einen anderen Weg gefunden, um dies zum Laufen zu bringen , entlang eines taiwanesischen Blogs zum Upgrade von MVC 2 auf MVC 3: http://blog.kkbruce.net/2011_04_01_archive.html (Sie können Microsoft Translate in IE10 tatsächlich verwenden, um zu sehen die englische Version und es ist eine ziemlich gute Übersetzung ...)
Der Trick besteht darin, alle Versionen zu finden, die sich auf MVC3 beziehen (z. B. Razor-, Mvc- und Helper-Assemblys. Sie werden wissen, was sie sind, wenn Sie zu Ihren Referenzen gehen und alle neueren Versionen Ihrer referenzierten Assemblys überprüfen) und sie ändern 1.0.0.0 bis 2.0.0.0 und von 3.0.0.0 bis 4.0.0.0 (da die öffentlichen Schlüssel identisch sind). Sie können auch versuchen, die Versionen gemäß dem Blog zu entfernen.
Ein weiterer wichtiger Punkt ist, dass diese Einstellungen in allen Web.Configs enthalten sind. Also nicht nur unter Ihrem Stamm, sondern auch unter Ansicht, Bereich / {Bereich} / Ansicht usw.
Ich bin der Meinung, dass Sie mit dieser Lösung ein vollständiges Upgrade auf die MVC4 durchführen können, anstatt einen Hybrid zu haben, der für mich sowieso nicht funktioniert hat.
quelle
Du wirst bemerken:
System.Web.WebPages.Razor
Änderungen vonVersion=1.0.0.0
zuVersion=2.0.0.0
System.Web.Mvc
Änderungen vonVersion=3.0.0.0
bisVersion=4.0.0.0
quelle
Wenn dieses Problem auftritt und Sie die oben genannten Lösungen ausprobiert haben und dies nicht funktioniert, überprüfen Sie bitte die Datei web.config in Ihrem Ordner "Ansichten". Möglicherweise gibt es einige Konfigurationen, die mit der Datei Web.config in Ihrem App-Stammordner in Konflikt stehen
quelle
Ein Teil Ihres Codes wird auf den aktuellen MVC-Bits ausgeführt, während andere auf die neuere Version verschoben wurden. Ohne den Code zu verstehen, kann ich Ihnen nicht sagen, welches bestimmte Bit das Problem verursacht.
Trotzdem würde ich niemals eine Beta auf einer Produktionsentwicklungsmaschine einrichten. Es ist heutzutage zu einfach, eine VM zu erstellen und die Beta auf einem Image auszuführen. In Windows 7+ können Sie das Image vom Metall booten und nicht den Perf-Hit ausführen, wenn Sie dies benötigen (mit Dev-Tool-Betas tun Sie dies häufig).
quelle
Der Vollständigkeit halber...
Sie können Webseiten auch ganz deaktivieren, wenn Sie sie nicht verwenden.
(Die Beziehung zwischen Rasiermesseransichten und Webseiten ist mir noch nicht ganz klar, aber meine MVC-App mit Rasiermesseransichten funktioniert anscheinend immer noch mit deaktivierten Webseiten.)
quelle
Löschen Sie auch als letzten Schritt Ihren Bin-Ordner aus dem Projekt, von dem der Fehler stammt.
quelle