Я пытаюсь заставить свою первую веб-страницу ASP.NET работать в Windows, используя Мононуклеоз и веб-сервер XSP.
Я слежу за этим парнем пример. первая часть в его примере очень хорошо работает с последней версией моно. однако веб-часть, кажется, падает со следующей ошибкой
'{Path Name}\Index.aspx.cs' is not a valid virtual path.
Вот полная трассировка стека:
System.Web.HttpException: 'C:\Projects\Mono\ASPExample\simpleapp\index.aspx.cs' is not a valid virtual path.
at System.Web.HttpRequest.MapPath (System.String virtualPath, System.String baseVirtualDir, Boolean allowCrossAppMapping) [0x00000]
at System.Web.HttpRequest.MapPath (System.String virtualPath) [0x00000]
at System.Web.Compilation.BuildManager.AddToCache (System.String virtualPath, System.Web.Compilation.BuildProvider bp) [0x00000]
at System.Web.Compilation.BuildManager.BuildAssembly (System.Web.VirtualPath virtualPath) [0x00000]
at System.Web.Compilation.BuildManager.GetCompiledType (System.String virtualPath) [0x00000]
at System.Web.Compilation.BuildManager.CreateInstanceFromVirtualPath (System.String virtualPath, System.Type requiredBaseType) [0x00000]
at System.Web.UI.PageParser.GetCompiledPageInstance (System.String virtualPath, System.String inputFile, System.Web.HttpContext context) [0x00000]
at System.Web.UI.PageHandlerFactory.GetHandler (System.Web.HttpContext context, System.String requestType, System.String url, System.String path) [0x00000]
at System.Web.HttpApplication.GetHandler (System.Web.HttpContext context, System.String url, Boolean ignoreContextHandler) [0x00000]
at System.Web.HttpApplication.GetHandler (System.Web.HttpContext context, System.String url) [0x00000]
at System.Web.HttpApplication+<Pipeline>c__Iterator5.MoveNext () [0x00000]
Мне было интересно, знает ли кто-нибудь, что означает эта ошибка. Думаю, я ищу эксперта по моно, который попробовал версию для Windows.





Можете ли вы вставить командную строку, которую вы используете для запуска xsp? Если вы просто запускаете одно веб-приложение, что-то подобное на самом деле не нужно и может быть источником проблемы:
xsp --applications / SimpleWebApp: C: \ Projects \ Mono \ ASPExample \
просто перейдите в каталог ASPExample и запустите xsp без параметров.
Я использовал следующую команду:
@echo off
call C:\PROGRA~1\MONO-2~1.1\bin\setmonopath.bat
xsp --root . --port 8088 --applications /:.
Я попытался запустить XSP без параметров и получил следующий результат:
xsp2 Listening on address: 0.0.0.0 Root directory: C:\Projects\Mono\ASPExample Listening on port: 8080 (non-secure) Hit Return to stop the server.
Когда я пытаюсь перейти к проекту на
Я получаю тот же результат, что и раньше, т.е. стонет, что файл CS не является допустимым виртуальным путем.
Я думаю, что проблема в атрибуте src страницы ASPX. Возможно, он обновился в новой версии Mono. Я собираюсь изучить это.
Кстати, спасибо за ответ.
Дэйв
Эй, я не знаю, как заставить работать "код позади", но я нашел обходной путь, которым я доволен. Я думал, что выложу это здесь для других. Обычно вы перемещаете код на главную страницу, и он отлично работает, просто используя
Команда XSD и без параметров.
<%@ Page Language = "C#" %>
<%@ Import Namespace = "System.Data" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns = "http://www.w3.org/1999/xhtml" xml:lang = "en" lang = "en">
<head>
<title>Code behind Arrrrrrrrrrgh</title>
<meta http-equiv = "Content-Type" content = "text/html; charset=utf-8" />
<script runat = "server">
private void Page_Load(Object sender, EventArgs e)
{
DisplayServerDetails();
DisplayRequestDetails();
}
private void DisplayServerDetails()
{
serverName.Text = Environment.MachineName;
operatingSystem.Text = Environment.OSVersion.Platform.ToString();
operatingSystemVersion.Text = Environment.OSVersion.Version.ToString();
}
private void DisplayRequestDetails()
{
requestedPage.Text = Request.Url.AbsolutePath;
requestIP.Text = Request.UserHostAddress;
requestUA.Text = Request.UserAgent;
}
</script>
</head>
<body>
<form method = "post" runat = "server">
<table width = "450px" border = "1px">
<tr>
<td colspan = "2"><strong>Server Details</strong></td>
</tr>
<tr>
<td>Server Name:</td>
<td>
<asp:Label id = "serverName" runat = "server"></asp:Label></td>
</tr>
<tr>
<td>Operating System:</td>
<td>
<asp:Label id = "operatingSystem" runat = "server"></asp:Label>
</td>
</tr>
<tr>
<td>Operating System Version:</td>
<td>
<asp:Label id = "operatingSystemVersion" runat = "server">
</asp:Label>
</td>
</tr>
</table>
<br>
<table width = "450px" border = "1px">
<tr>
<td colspan = "2"><strong>Request Details</strong></td>
</tr>
<tr>
<td>Page Requested:</td>
<td>
<asp:Label id = "requestedPage" runat = "server"></asp:Label>
</td>
</tr>
<tr>
<td>Request From:</td>
<td>
<asp:Label id = "requestIP" runat = "server"></asp:Label>
</td>
</tr>
<tr>
<td>User Agent:</td>
<td>
<asp:Label id = "requestUA" runat = "server"></asp:Label>
</td>
</tr>
</table>
</form>
</body>
Вы пробовали запускать xsp2, а не xsp?