Пример веб-страницы с использованием Mono и XSP в окне Windows

Я пытаюсь заставить свою первую веб-страницу 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.

Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
0
0
4 404
4
Перейти к ответу Данный вопрос помечен как решенный

Ответы 4

Можете ли вы вставить командную строку, которую вы используете для запуска 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.

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

http: // локальный: 8080

Я получаю тот же результат, что и раньше, т.е. стонет, что файл 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?

Другие вопросы по теме