Asp.net mvc 使用Mono和MVC 4的视图出错

Asp.net mvc 使用Mono和MVC 4的视图出错,asp.net-mvc,asp.net-mvc-4,mono,mod-mono,xsp,Asp.net Mvc,Asp.net Mvc 4,Mono,Mod Mono,Xsp,我试图开始使用Mono框架,但遇到了很多问题,最近的一个问题让我很恼火。我已经找遍了所有的解决方案,但还没有找到答案 环境 Ubuntu 12.04(在Hyper-V虚拟机上) Visual Studio 2012(完全更新) ASP.NET MVC 4 .NET Framework 4 Mono 3.4.0(使用make直接从git中提取和编译) XSP Mono.WebServer2 0.2.0.0(也来自git) 我的mono安装几乎完全按照中的说明进行。结果是: 我使用默认选项在VS 2

我试图开始使用Mono框架,但遇到了很多问题,最近的一个问题让我很恼火。我已经找遍了所有的解决方案,但还没有找到答案

环境
Ubuntu 12.04(在Hyper-V虚拟机上)
Visual Studio 2012(完全更新)
ASP.NET MVC 4
.NET Framework 4
Mono 3.4.0(使用make直接从git中提取和编译)
XSP Mono.WebServer2 0.2.0.0(也来自git)

我的mono安装几乎完全按照中的说明进行。结果是:

  • 我使用默认选项在VS 2012中创建了一个新的MVC 4项目
  • 我使用文件系统发布配置文件发布上述应用程序,而不更改任何引用DLL的“复制本地”设置
  • 然后,将文件FTP到Ubuntu虚拟机,并将它们全部复制到网站主文件夹(/var/www/mvc,我将其配置为Apache2的默认文件夹)
  • 在bash提示符下运行
    cd/var/www/mvc
    ,然后运行
    xsp4
  • 点击服务器/端口并收到此错误:
  • 系统无效操作异常
    找不到视图“索引”或其主视图,或者没有视图引擎支持搜索的位置。已搜索以下位置:
    ~/Views/Home/Index.aspx
    ~/Views/Home/Index.ascx
    ~/Views/Shared/Index.aspx
    ~/Views/Shared/Index.ascx
    ~/Views/Home/Index.cshtml
    ~/Views/Home/Index.vbhtml
    ~/Views/Home/Index.cshtml
    ~/Views/Home/Index.vbhtml

    描述:HTTP 500。处理请求时出错。
    详细信息:非web异常。异常源(应用程序或对象的名称):System.Web.Mvc。
    异常堆栈跟踪:

    at System.Web.Mvc.ViewResult.FindView(System.Web.Mvc.ControllerContext context) [0x00000] in <filename unknown>:0
    at System.Web.Mvc.ViewResultBase.ExecuteResult(System.Web.Mvc.ControllerContext context) [0x00000] in <filename unknown>:0
    at System.Web.Mvc.ControllerActionInvoker.InvokeActionResult(System.Web.Mvc.ControllerContext controllerContext, System.Web.Mvc.ActionResult actionResult) in <filename unknown>:0
    at System.Web.Mvc.ControllerActionInvoker+<>c__DisplayClass1a.<InvokeActionResultWithFilters>b__17 () [0x00000] in <filename unknown>:0
    at System.Web.Mvc.ControllerActionInvoker.InvokeActionResultFilter(IResultFilter filter, System.Web.Mvc.ResultExecutingContext preContext, System.Func`1 continuation) [0x00000] in <filename unknown>:0
    
    位于System.Web.Mvc.ViewResult.FindView(System.Web.Mvc.ControllerContext上下文)[0x00000]中:0
    0中的System.Web.Mvc.ViewResultBase.ExecuteSult(System.Web.Mvc.ControllerContext上下文)[0x00000]处
    位于:0中的System.Web.Mvc.ControllerActionInvoker.InvokeActionResult(System.Web.Mvc.ControllerContext ControllerContext,System.Web.Mvc.ActionResult ActionResult)处
    在System.Web.Mvc.ControllerActionInvoker+c_uuDisplayClass1A.b_uu17()[0x00000]中:0
    在System.Web.Mvc.ControllerActionInvoker.InvokeActionResultFilter(IResultFilter筛选器,System.Web.Mvc.ResultExecutingContext预文本,System.Func`1 continuation)[0x00000]中:0
    
    版本信息:3.4.0(master/830c517-Fri-Feb 28 16:03:26 CST 2014);ASP.NET版本:4.0.30319.17020

    我尝试过各种编译组合(目标是4.5而不是4.0,使用MVC 3而不是4),复制本地化的各种引用组合,以及详尽的web搜索……都没有用。这和我的单声道版本有关吗?XSP?这个问题有最终的解决方案吗

    更新
    如果我将.NET Framework 4.5作为MVC 4项目的目标,则错误会更改为:

    System.IO.FileNotFoundException
    无法加载文件或程序集“log4net,Version=1.2.11.0,Culture=neutral,PublicKeyToken=669e0ddf0bb1aa2a”或其依赖项之一。
    描述:HTTP 500。处理请求时出错。
    详细信息:非web异常。异常源(应用程序或对象的名称):DotNetOpenAuth.Core。
    异常堆栈跟踪:

    at DotNetOpenAuth.Logger.Create(System.String name) [0x00000] in <filename unknown>:0
    at DotNetOpenAuth.Logger.CreateWithBanner(System.String name) [0x00000] in <filename unknown>:0
    at DotNetOpenAuth.Logger..cctor() [0x00000] in <filename unknown>:0
    
    在:0中的DotNetOpenAuth.Logger.Create(System.String name)[0x00000]处
    在:0中的DotNetOpenAuth.Logger.CreateWithBanner(System.String名称)[0x00000]处
    在:0中的DotNetOpenAuth.Logger..cctor()[0x00000]处
    

    我不使用log4net。

    经过几天的研究,我学到了一些东西,首先也是最重要的是,Ubuntu 12.04不支持Mono3.x

    因此,MVC4在该操作系统上是不可能的(以及我使用过的大多数其他Linux操作系统)。作为将来的参考,我终于能够让MVC 3在Ubuntu 12.04上运行,并执行以下操作:

  • 使用Hyper-V虚拟机从安装Ubuntu12.04(如果有人想要的话,我很乐意提供有关该安装的详细信息)
  • 安装所有Ubuntu更新(需要重新启动)
  • 打开一个终端窗口(Ctrl+Alt+T)
  • (可选)安装XRDP,它允许远程桌面连接到Ubuntu虚拟机。我无法忍受带有*nix系统的Hyper-V的默认终端服务器窗口,因为键盘/鼠标映射很愚蠢

    sudo-apt-get-install-xrdp

  • (可选)在终端上使用
    ifconfig
    获取可用于远程桌面连接的VMs IP地址

  • 安装Apache2

    sudo apt get install apache2

  • 安装Apache2线程开发(XSP4需要,安装在下面)

    sudo-apt-get-install-apache2-threaded-dev

  • 安装Mono运行时包

    sudo apt get install mono运行时

  • 安装Mono完整的软件包

    sudo-apt-get-install-mono-complete

  • 安装XSP4(这是一个非常轻量级的web服务器,可用于开发)

    sudo apt get安装mono-xsp4

  • 安装ASP.NET示例包。显然,XSP4并没有安装它需要的所有东西,但需要单独安装一些ASP.NET组件才能工作

    sudo apt get安装asp.net示例

  • 之后,您可以在
    /var/www
    中为MVC 3站点设置一个文件夹,并部署站点。将某些程序集复制到站点文件夹以使其正常工作非常重要,即:

    • System.Web.Helpers
    • System.Web.Mvc
    • System.Web.Razor
    • System.Web.Routing
    • System.Web.Web页面
    • System.Web.WebPages.Razor
    • System.Web.WebPages.Deployment
    因此,请确保将这些设置为“复制本地”,或者找出Windows系统上的正确版本,然后手动将它们复制到站点文件夹中。然后,您可以配置Apache并使用X测试您的站点
    cd /var/www/sitefolder/
    xsp4
    
    xsp4
    Listening on address: 0.0.0.0
    Root directory: /var/www/sitefolder
    Listening on port: 8080 (non-secure)
    Hit Return to stop the server.