Пример веб-страницы с использованием Mono и XSP в окне Windows - PullRequest
0 голосов
/ 14 ноября 2008

Я пытаюсь заставить мою первую веб-страницу ASP.NET работать на окнах, используя Mono и веб-сервер XSP.

Я слежу за этим парнем пример . первая часть его примера очень хорошо работает с последней версией моно. однако веб-часть, кажется, падает со следующей ошибкой

'{Path Name} \ Index.aspx.cs' не является действительный виртуальный путь.

Вот полная трассировка стека:

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.

Ответы [ 4 ]

1 голос
/ 15 ноября 2008

Можете ли вы вставить командную строку, которую вы используете для запуска xsp? Если вы просто запускаете одно веб-приложение, что-то вроде этого действительно не нужно и может быть источником проблемы:

xsp --applications / SimpleWebApp: C: \ Projects \ Mono \ ASPExample \

просто перейдите в каталог ASPExample и запустите xsp без параметров.

0 голосов
/ 18 ноября 2008

Вы пробовали запустить xsp2 вместо xsp?

0 голосов
/ 17 ноября 2008

Эй, я не знаю, как заставить работать "код позади", но я нашел обходной путь, которым я счастлив Я думал, что выложу это здесь для блага других. По сути, вы перемещаете код на главную страницу, и он прекрасно работает, просто используя

Команда 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>
0 голосов
/ 17 ноября 2008

Команда, которую я использовал, была такой:

@echo off
call C:\PROGRA~1\MONO-2~1.1\bin\setmonopath.bat
xsp --root . --port 8088 --applications /:.

Я попытался запустить XSP без параметров, и я получил следующий вывод:

xsp2 Прослушивание по адресу: 0.0.0.0 Корневая директория: C: \ Projects \ Mono \ ASPExample Listening через порт: 8080 (незащищенный) Hit Return остановить сервер.

Когда я пытаюсь перейти к проекту на

http://localhost:8080

Я получаю тот же вывод, что и раньше. Т.е. Стонет, что файл CS не является действительным виртуальным путем.

Я думаю, что проблема в атрибуте src страницы ASPX. Возможно, это было обновлено в новой версии Mono. Я собираюсь разобраться в этом.

Спасибо за ваш ответ.

Dave

...