2014-04-21 9 views
13

Próbuję uruchomić witrynę MVC5 na moim komputerze z systemem Linux przy użyciu Mono i XSP4. Działa bez widoków, jednak gdy próbuję renderować coś, daje mi to błędy.Mono MVC5 - Widoki nie działają

Oto mój kod testowy. Zauważ, że niczego nie zmieniłem, jest to w zasadzie pusta strona bez EF lub innych bibliotek. Po prostu bosa MVC5 + Razor.

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

System.InvalidOperationException

nie można zlokalizować brzytwa Host fabryka typ: System.Web.Mvc.MvcWebRazorHostFactory, System.Web.Mvc, Version = 5.0.0.0, Culture = neutral, TokenKluczaPublicznego = 31bf3856ad364e35

Opis: HTTP 500.Error prośba przetwarzanie.

Szczegóły: wyjątek od sieci Web. Pochodzenie wyjątku (nazwa aplikacji lub obiektu): System.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__() 

... 

Próbowałem zmienić Version = 5.0.0.0 do 4.0.0.0 i 3.0.0.0 itp ale nic nie działa. Wciąż dostaję ten sam błąd, właśnie teraz chodzi o 4.0.0.0.

Czy jest jakaś nadzieja?

+0

Wypróbowałeś: sudo apt-get install asp.net-examples –

+0

@DavidCrowell Nie, AFAIK są bezcelowe, ponieważ mają 3+ lat. Pokazują, jak działa MVC2. Otrzymuję mono z git i kompiluję ze źródeł, ponieważ oficjalna strona jest opóźniona. A mono w repozytoriach aptitude jest również bardzo starą wersją. – sed

+0

Czy masz skonfigurowaną log4net?TypeFactory (odwołanie w WebRazorHost) używa log4net. –

Odpowiedz

20

Problemem jest to, że jest w Web.config wewnątrz /Views folderu. system.web.webPages.razorhost Parametr musi dokładnie pasować do wersji MVC.

Na przykład, jeśli masz MVC 5.2.2.0 to powinno wyglądać <host factoryType="System.Web.Mvc.MvcWebRazorHostFactory, System.Web.Mvc, Version=5.2.2.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" />.

-1

To tak, jak mówi Stan. Sprawdź swoją wersję System.Web.MVC wykonując "prawy przycisk myszy> Właściwości" w folderze Reference (w twoim projekcie). Następnie zaktualizuj tę linię w swoim /views/web.config.

0

Ten jest dla mnie. Zmieniłem Web.config w folderze Widoki, wersję Mvc na 5.2.3.0 zgodnie z moją wersją Mvc. Np. <host factoryType="System.Web.Mvc.MvcWebRazorHostFactory, System.Web.Mvc, Version=5.2.3.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" />

zmieniłem wersję z 5.2.0.0 do 5.2.3.0.

2

Wersja MVC Twojego projektu musi odpowiadać wersji MvcWebRazorHostFactory, musi być taka sama. Musiałem zmienić wersję na 5.2.3.0 (w pliku Views/Web.config).

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

Jeśli nie wiem, która wersja MVC używasz w swoim projekcie, a następnie przejść do Projektu -> Edycja odnośników -> następnie po prawej stronie, w sekcji „Wybrane referencje” przewiń do System.Web.Mvc gdzie powinien sprawdzić, z której wersji korzystasz. Tak dowiedziałem się w Xamarin Studio Community.