我有一个mvc 3网络应用程序,但我的共享网络托管公司仅支持MVC 2。 所以我也部署了mvc 3相关的dll,它在服务器上运行良好,直到它是mvc 3 beta。
昨天,我将我的电脑环境升级到mvc 3 RC并重建我的网络应用程序。该应用程序在我的本地PC上运行良好,但是当我在托管服务器上部署并运行时,它会出错。
[MissingMethodException: Method not found: 'Void System.Web.Mvc.GlobalFilterCollection.Add(System.Object)'.]
Myweb.MvcApplication.RegisterGlobalFilters(GlobalFilterCollection filters) in c:\my\Global.asax.cs:18
Myweb.MvcApplication.Application_Start() in c:\my\Global.asax.cs:36
如您所见,当我尝试在global.asax中注册全局过滤器时,它说它无法找到Mvc.GlobalFilterCollection.Add(object)方法。
如果我没有注册任何全局过滤器,整个网络在托管服务器上运行良好。
如何解决此错误?
编辑: 似乎mvc3 beta已在托管服务器的GAC中注册。他们说不是,但我在我的应用程序中检查了引用的System.Web.Mvc.dll的位置。
答案 0 :(得分:5)
根据您的描述,我看起来您在计算机上使用的MVC 3版本与上传到服务器的版本之间存在mksmatch。我们更改了GlobalFilterCollection.Add
的参数,看起来您正在使用MVC 3 RC在PC上编译应用程序,但是您要将其部署到具有MVC 3 Beta的服务器上。请确保您的服务器上的System.Web.Mvc.dll版本是正确的。
编辑:要确认Eilon的评论,如果MVC 3 Beta已安装到GAC中,那么即使您的应用程序的bin文件夹中有RC版本,它也将始终获胜。