Mono上的ASP.NET MVC Preview 5
-
03-07-2019 - |
题
有没有人有关于在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,所以它可能无法正常工作。
不隶属于 StackOverflow