2014-04-21 13 views
13

Sto tentando di avviare il sito Web MVC5 sulla mia macchina Linux utilizzando Mono e XSP4. Funziona senza visualizzazioni tuttavia quando provo a rendere qualcosa mi dà errori.Mono MVC5 - Le viste non funzionano

Ecco il mio codice di test. Nota che non ho cambiato nulla, questo è fondamentalmente un sito vuoto senza EF o altre librerie. Solo rasoio MVC5 + Rasoio nudo.

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

System.InvalidOperationException

Impossibile localizzare Razor Host fabbrica Tipo: System.Web.Mvc.MvcWebRazorHostFactory, System.Web.Mvc, Version = 5.0.0.0, Culture = neutral, PublicKeyToken = 31BF3856AD364E35

Descrizione: HTTP 500. Richiesta di elaborazione errore.

Dettagli: eccezione non Web. Origine eccezione (nome dell'applicazione o dell'oggetto): 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__() 

... 

Ho provato a cambiare la versione = 5.0.0.0 al 4.0.0.0 e 3.0.0.0, ecc, ma non funziona niente. Ho ancora lo stesso errore solo ora è circa 4.0.0.0.

C'è qualche speranza?

+0

Hai provato: sudo apt-get install asp.net-esempi –

+0

@DavidCrowell No, AFAIK sono inutili perché hanno 3+ anni. Mostrano come funziona MVC2. Ottengo mono da git e compilo da fonti dato che il sito ufficiale è in ritardo. E mono in repository aptitude è anche una versione molto vecchia. – sed

+0

Avete configurato log4net?TypeFactory (di riferimento in WebRazorHost) utilizza log4net. –

risposta

20

Il problema si trova in Web.config all'interno della cartella /Views. Il parametro system.web.webPages.razorhost deve corrispondere esattamente alla versione MVC.

Ad esempio, se si dispone di MVC 5.2.2.0, dovrebbe apparire come <host factoryType="System.Web.Mvc.MvcWebRazorHostFactory, System.Web.Mvc, Version=5.2.2.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" />.

-1

È proprio come dice Stan. Controlla la tua versione di System.Web.MVC facendo "clic destro> Proprietà" nella tua cartella di riferimento (nel tuo progetto). Quindi, aggiorna quella linea nel tuo /views/web.config.

0

Questo è lavoro per me. Ho modificato Web.config nella cartella Views, versione Mvc come 5.2.3.0 in base alla mia versione di Mvc. Es. <host factoryType="System.Web.Mvc.MvcWebRazorHostFactory, System.Web.Mvc, Version=5.2.3.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" />

Ho cambiato la versione da 5.2.0.0 a 5.2.3.0.

2

La versione MVC del progetto deve corrispondere alla versione di MvcWebRazorHostFactory, deve essere la stessa. Ho dovuto cambiare la versione in 5.2.3.0 (nel file Views/Web.config).

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

Se non si conosce la versione di MVC che si sta utilizzando nel progetto, poi vai a progetto -> Modifica referenze -> poi sul lato destro, sotto la voce "riferimenti selezionati" scorrere fino a System.Web.Mvc dove dovrebbe dovrebbe vedere quale versione stai usando. Ecco come ho scoperto nella community di Xamarin Studio.