ASP.NET MVC Preview 5 в моно
-
03-07-2019 - |
Вопрос
Есть ли у кого-нибудь информация о том, как текущие версии ASP.NET MVC (предварительная версия 5) работают на Mono 2.0?Была информация о старых версиях (Preview 2, может быть, Preview 3), но я не видел подробностей о том, как заставить Preview 5 работать.
А Дорожная карта монопроекта указывает ASP.NET 3.5 для Mono 2.4 (в следующем году).Есть идеи, как сделать это полезным до этого?
Более подробная информация:Базовый шаблон MVC Preview 5, похоже, работает, если я избегаю корневого каталога.Если я запрошу рут, я получаю:
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 to / есть какая-то ошибка, поэтому просто избегайте этого.Изменение RewritePath(Request.ApplicationPath) на:
HttpContext.Current.RewritePath("/Home/Index");
Кажется, проблема решена, и, по крайней мере, демо-версия пока работает.
Другие советы
Asp.Net MVC 1.0 будет работать с веткой mono 2.4, но вам все равно придется исправить RewritePath при загрузке страницы default.aspx.cs.
Вы используете Mono из SVN или стабильную версию?Какой веб-сервер вы используете?Какая операционная система?Есть ли у вас правила перезаписи на вашем веб-сервере?
Я могу запустить предварительную версию 4 в Linux с помощью метода page_load в default.aspx.cs.
HttpContext.Current.RewritePath(Request.ApplicationPath);
((IHttpHandler)new MvcHttpHandler()).ProcessRequest(HttpContext.Current);
Иногда мне это тоже нужно в Windows.Я еще не тестировал версию 5 в Linux, поэтому она может не работать.