2013-11-27 59 views
1
通电C#mvc4 .net4.5从Visual Studio

Web应用程序2012年单3.2.7 MVC5 C#麻烦

应用部署:Ubuntu服务器13.10。单声道版本3.2.7(我建立从GIT) Web服务器的Apache/2.4.6是mod_mono 2.11(从GIT)

版本信息:3.2.7(主/ 5b65cb8周三11月27日14时49分11秒MSK 2013年); ASP.NET版本:4.0.30319.17020

该应用程序正在工作。但是当我尝试去任何形式,应用程序失败 ,出现以下错误^

应用程序异常 system.missingMethodException而没有发现 方法:“System.Web.Routing.RouteCollection.get_AppendTrailingSlash”。

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

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

我该如何解决它?

+0

欢迎来到SO!请添加相关代码以获得更快更有用的回复。 – Ani

+0

好吧我会尝试添加 – avmaisak

+0

我不能添加代码((有些是错的,但是它是非标准的mvc代码形式,我用了很多次,它是windows服务器和本地调试的工作人员 – avmaisak

回答

2

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

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

PS:Mono's Compatibility page没有列出MVC4为100%完成,因此我建议降级到MVC3以使其在Linux中可以正常工作。 PS:如果你真的不能降级,你可能想要帮助MVC5兼容Mono的任务;如果你真的不能降级,它实际上比你想象的更接近真实,因为有人添加了一个即将被审查的拉取请求:https://github.com/mono/mono/pull/888(如果你用这个拉取请求测试mono,并且它适用于你的MVC5网站,那么我建议你在在拉动请求内部发表评论,这可能使事情向前移动一点)。

+0

谢谢你我会尝试 – avmaisak

+0

当你使用'Html.BeginForm()'或者其他涉及到路由的东西的时候会引起这个问题@knocte,有什么办法可以解决这个问题吗?以某种方式自己添加此功能? – sed

+0

是的,请提出请求 – knocte

0

而不是使用ASP.NET MVC佣工,我们可以使用基本的HTML语法如下:

锚状组件:

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

对于像形式组件:

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

当然,它并没有解决的bug,但至少它可以得到ASP.NET MVC单上运行5项目。

感谢@teovankot指出了这一点。