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。
如何解决问题?
答案 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指出这一点。