单声道3.2.7 MVC5 C#麻烦

时间:2013-11-27 12:45:35

标签: c# mono apache2

Web应用程序从visual studio 2012启动c#mvc4 .net4.5。

应用程序部署在:ubuntu服务器13.10。 mono version 3.2.7(我是从git构建的) Web服务器Apache / 2.4.6 mod_mono 2.11(来自git)

版本信息:3.2.7(master / 5b65cb8 Wed Nov 27 14:49:11 MSK 2013); ASP.NET版本:4.0.30319.17020

该应用程序正在运行。但当我尝试转到任何形式时,应用程序失败 出现以下错误^

应用程序异常 system.missingMethodException而 找不到方法:'System.Web.Routing.RouteCollection.get_AppendTrailingSlash'。

描述:HTTP 500.Error处理请求。

详细信息:非Web异常。异常来源(应用程序或对象的名称):System.Web.Mvc。

如何解决问题?

2 个答案:

答案 0 :(得分:2)

这很可能意味着尚未在Mono中实现属性System.Web.Routing.RouteCollection.AppendTrailingSlash

为了避免将来出现这些问题,您应该尝试在Linux中进行编译,而不是仅仅编译应用程序并将二进制文件复制到Linux上。

PS:Mono's Compatibility page没有将MVC4列为100%完成,所以我建议降级到MVC3以使其在Linux中运行。

PS II:如果你真的真的无法降级,你可能想要帮助完成将MVC5兼容性赋予Mono的任务;它实际上比你想象的更接近真实,因为有人添加了一个即将被审查的拉取请求:https://github.com/mono/mono/pull/888(如果你用这个拉取请求测试单声道,它适用于你的MVC5网站,我建议你在拉取请求中的注释中这样说,这可能会使事情向前移动一点点。)

答案 1 :(得分:0)

我们可以使用基本的HTML语法,而不是使用ASP.NET MVC助手:

对于类似锚的组件:

<a href="~/ControllerName/ActionName"> Test </a>

对于类似组件的表单:

    <form action="~/ControllerName/ActionName">
    <br>
    <input type="text" placeholder="Enter name"/>
    <br>
    <input type="submit" value="Submit"/>
    </form> 

当然,它并没有解决这个问题,但至少它可以让Mono上的ASP.NET MVC 5项目运行。

感谢@teovankot指出这一点。