Domanda

Qualcuno ha qualche informazione su come far funzionare le versioni correnti di ASP.NET MVC (Anteprima 5) su Mono 2.0? C'erano informazioni sulle vecchie versioni (Anteprima 2, forse Anteprima 3), ma non ho visto alcun dettaglio su come far funzionare l'anteprima 5.

La Roadmap del progetto mono indica ASP.NET 3.5 per Mono 2.4 (il prossimo anno). Qualche idea su come ottenerlo utile prima di allora?

Ulteriori dettagli: il modello di base dell'anteprima 5 di MVC sembra funzionare, purché evito la directory principale. Se richiedo il root, ottengo:

Server Error in '/' Application
The virtual path '' maps to another application.

Description: HTTP 500. Error processing request.

Stack Trace:

System.Web.HttpException: The virtual path '' maps to another application.
  at System.Web.HttpContext.RewritePath (System.String filePath, System.String pathInfo, System.String queryString, Boolean setClientFilePath) [0x00000] 
  at System.Web.HttpContext.RewritePath (System.String path, Boolean rebaseClientPath) [0x00000] 
  at System.Web.HttpContext.RewritePath (System.String path) [0x00000] 
  at MvcApplication1._Default.Page_Load (System.Object sender, System.EventArgs e) [0x00000] 
  at System.Web.UI.Control.OnLoad (System.EventArgs e) [0x00000] 
  at System.Web.UI.Control.LoadRecursive () [0x00000] 
  at System.Web.UI.Page.ProcessLoad () [0x00000] 
  at System.Web.UI.Page.ProcessPostData () [0x00000] 
  at System.Web.UI.Page.InternalProcessRequest () [0x00000] 
  at System.Web.UI.Page.ProcessRequest (System.Web.HttpContext context) [0x00000] 

Version information: Mono Version: 2.0.50727.42; ASP.NET Version: 2.0.50727.42
È stato utile?

Soluzione

Bene, un potenziale è che RewritePath / abbia qualche tipo di bug, quindi evitatelo. Modifica di RewritePath (Request.ApplicationPath) in:

HttpContext.Current.RewritePath("/Home/Index");

Sembra risolvere il problema, e almeno la demo funziona finora.

Altri suggerimenti

Asp.Net MVC 1.0 funzionerà con il ramo 2.4 di mono ma sarà comunque necessario correggere RewritePath nel caricamento della pagina di default.aspx.cs

Stai usando Mono da svn o stable? Che tipo di server web stai usando? Che tipo di sistema operativo? Hai regole di riscrittura nel tuo server web?

Posso eseguire l'anteprima 4 in Linux con questo nel metodo page_load in default.aspx.cs

HttpContext.Current.RewritePath(Request.ApplicationPath);
 ((IHttpHandler)new MvcHttpHandler()).ProcessRequest(HttpContext.Current);

A volte ne ho bisogno anche in Windows. Non ho ancora testato la versione 5 in Linux, quindi potrebbe non funzionare.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top