0

我正在尝试让我的第一个 ASP.NET 网页使用Mono和 XSP Web 服务器在 Windows 上运行。

我正在关注这个 chaps示例。他的示例的第一部分非常适用于最新版本的单声道。但是,Web 部件似乎因以下错误而崩溃

'{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

4 回答 4

1

你能粘贴你用来启动xsp的命令行吗?如果您只是运行一个 webapp,那么实际上并不需要这样的东西,并且可能是问题的根源:

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

只需 cd 到 ASPExample 目录并运行不带参数的 xsp。

于 2008-11-15T03:21:25.610 回答
0

我使用的命令是这样的:

@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 监听端口:8080(非安全) 点击返回停止服务器。

当我尝试浏览到项目时

http://localhost:8080

我得到与以前相同的输出,即抱怨 cs 文件不是有效的虚拟路径。

我认为 ASPX 页面的 src 属性是问题所在。也许它已在新版本的 Mono 中进行了更新。我要调查一下。

感谢您的回复顺便说一句。

戴夫

于 2008-11-17T10:56:08.033 回答
0

嘿,我不知道如何让“代码背后”的东西工作,但我找到了一个我很满意的解决方法。我想我会把它贴在这里以造福他人。基本上,您将后面的代码移到主页中,只需使用

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>
于 2008-11-17T12:27:19.453 回答
0

您是否尝试过运行 xsp2 而不是 xsp?

于 2008-11-18T19:25:00.297 回答