有没有人有关于在Mono 2.0上使用当前版本的ASP.NET MVC(预览版5)的任何信息?有旧版本的信息(预览2,也许预览3),但我没有看到有关使预览5实际工作的细节。

Mono Project Roadmap 表示适用于Mono 2.4的ASP.NET 3.5(明年)。关于如何在此之前使用它的任何想法?

更多细节:基本的MVC Preview 5模板似乎可以工作,只要我避开根目录。如果我请求root,我会得到:

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
有帮助吗?

解决方案

一个潜在的可能是RewritePath对/有某种bug,所以只是避免这种情况。将RewritePath(Request.ApplicationPath)更改为:

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

似乎可以解决问题,至少到目前为止演示工作。

其他提示

Asp.Net MVC 1.0将与单声道的2.4分支一起使用,但您仍需要在default.aspx.cs的页面加载中修复RewritePath

你是使用svn或稳定的Mono吗? 你使用什么样的网络服务器? 什么样的操作系统? 您的Web服务器中是否有重写规则?

我可以使用default.aspx.cs中的page_load方法在Linux中运行预览4

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

我有时也需要在Windows中使用它。 我还没有在Linux上测试版本5,所以它可能无法正常工作。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top