全局过滤器在MVC 3 RC上注册错误

时间:2010-11-13 01:06:46

标签: asp.net-mvc asp.net-mvc-3

我有一个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的位置。

1 个答案:

答案 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版本,它也将始终获胜。