2014-04-21 13 views
13

Ich versuche, MVC5-Website auf meiner Linux-Box mit Mono und XSP4 zu starten. Es funktioniert ohne Ansichten, aber wenn ich versuche, etwas zu rendern, gibt es mir Fehler.Mono MVC5 - Ansichten funktionieren nicht

Hier ist mein Testcode. Beachten Sie, dass ich nichts geändert habe, dies ist im Grunde eine leere Seite ohne EF oder andere Bibliotheken. Einfach nur Knochen MVC5 + Razor.

public ActionResult Index() 
{ 
    // return Content("'sall good"); // works 
    return View(); 
} 

System.InvalidOperationException

konnte nicht Razor Host-Fabrik suchen: System.Web.Mvc.MvcWebRazorHostFactory, System.Web.Mvc, Version = 5.0.0.0, Culture = neutral, PublicKeyToken = 31BF3856AD364E35

Beschreibung: HTTP 500. Fehler Verarbeitung Anforderung.

Details: Non-Web-Ausnahme. Ausnahmeursprung (Name der Anwendung oder des Objekts): System.Web.WebPages.Razor.

Stacktrace

at System.Web.WebPages.Razor.WebRazorHostFactory.CreateFactory (System.String typeName) [0x00000] in <filename unknown>:0 

at System.Collections.Concurrent.ConcurrentDictionary`2+<GetOrAdd>c__AnonStorey3[System.String,System.Func`1[System.Web.WebPages.Razor.WebRazorHostFactory]].<>m__0() [0x00000] in <filename unknown>:0 

at (wrapper delegate-invoke) System.Func`1<System.Collections.Generic.KeyValuePair`2<string, System.Func`1<System.Web.WebPages.Razor.WebRazorHostFactory>>>:invoke_TResult__this__() 

... 

Ich habe versucht, Version = 5.0.0.0 bis 4.0.0.0 und 3.0.0.0 usw. zu ändern, aber nichts funktioniert. Ich bekomme immer noch den gleichen Fehler, jetzt ist es 4.0.0.0.

Gibt es Hoffnung?

+0

Haben Sie versucht: sudo apt-get installieren asp.net-Beispiele –

+0

@DavidCrowell Nein, AFAIK sie sind sinnlos, weil sie 3+ Jahre alt sind. Sie zeigen, wie MVC2 funktioniert. Ich bekomme mono von git und kompiliere von Quellen, da die offizielle Seite hinterherhinkt. Und Mono in Aptitude-Repositories ist auch sehr alte Version. – sed

+0

Haben Sie log4net eingerichtet?TypeFactory (in WebRazorHost referenziert) verwendet log4net. –

Antwort

20

Das Problem ist in Web.config, die innerhalb Ordner ist. system.web.webPages.razorhost Parameter muss genau mit MVC-Version übereinstimmen.

Zum Beispiel, wenn Sie MVC 5.2.2.0 haben, dann sollte es wie <host factoryType="System.Web.Mvc.MvcWebRazorHostFactory, System.Web.Mvc, Version=5.2.2.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" /> aussehen.

-1

Es ist genau wie Stan sagt. Überprüfen Sie Ihre Version der System.Web.MVC mit "Rechtsklick> Eigenschaften" in Ihrem Referenzordner (in Ihrem Projekt). Aktualisieren Sie dann diese Zeile in Ihrem /views/web.config.

0

Dieser ist Arbeit für mich. Ich habe Web.config im Views-Ordner, Mvc-Version als 5.2.3.0 entsprechend meiner Mvc-Version geändert. Eg. <host factoryType="System.Web.Mvc.MvcWebRazorHostFactory, System.Web.Mvc, Version=5.2.3.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" />

Ich habe meine Version von 5.2.0.0 auf 5.2.3.0 geändert.

2

Die MVC-Version Ihres Projekts muss mit der Version von MvcWebRazorHostFactory übereinstimmen, sie muss identisch sein. Ich musste die Version zu 5.2.3.0 (in der Datei Views/Web.config) ändern.

<system.web.webPages.razor> 
    <host factoryType="System.Web.Mvc.MvcWebRazorHostFactory, System.Web.Mvc, Version=5.2.3.0 

Wenn Sie nicht wissen, welche Version von MVC Sie in Ihrem Projekt verwenden, dann zu Projekt gehen -> Bearbeiten Referenzen -> dann auf der rechten Seite unter „Ausgewählte Referenzen“ nach unten scrollen zu System.Web.Mvc wo sollte sehen, welche Version Sie verwenden. So habe ich es in der Xamarin Studio Community erfahren.