Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/69.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Asp.net mvc MVC 3 RC上的全局筛选器注册错误_Asp.net Mvc_Asp.net Mvc 3 - Fatal编程技术网

Asp.net mvc MVC 3 RC上的全局筛选器注册错误

Asp.net mvc MVC 3 RC上的全局筛选器注册错误,asp.net-mvc,asp.net-mvc-3,Asp.net Mvc,Asp.net Mvc 3,我有一个MVC3Web应用程序,但我的共享web托管公司只支持MVC2。 所以我也部署了与mvc 3相关的DLL,它在服务器上运行良好,直到mvc 3测试版 昨天,我将我的pc环境升级到MVC3RC,并重建了我的web应用程序。该应用程序在我的本地pc上运行良好,但当我在托管服务器上部署和运行时,它会出错 [MissingMethodException: Method not found: 'Void System.Web.Mvc.GlobalFilterCollection.Add(Syste

我有一个MVC3Web应用程序,但我的共享web托管公司只支持MVC2。 所以我也部署了与mvc 3相关的DLL,它在服务器上运行良好,直到mvc 3测试版

昨天,我将我的pc环境升级到MVC3RC,并重建了我的web应用程序。该应用程序在我的本地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)方法

如果我没有注册任何全局过滤器,整个web在托管服务器上运行良好

如何解决此错误

编辑:
mvc3测试版似乎已在托管服务器的GAC中注册。他们说不是,但我检查了我的应用程序中引用的System.Web.Mvc.dll的位置。

根据您的描述,我看您在计算机上使用的Mvc 3版本和上载到服务器的版本之间存在mksmatch。我们更改了GlobalFilterCollection.Add的参数,看起来您正在使用MVC 3 RC在PC上编译应用程序,但是您正在将其部署到具有MVC 3 Beta的服务器上。请确保System.Web.Mvc.dll的版本在您的服务器上是正确的


编辑:为了确认Eilon的评论,如果MVC 3 Beta安装到GAC中,那么它将始终获胜,即使你的应用程序的bin文件夹中有RC版本。

你能列出你部署到服务器上的DLL吗?在MVC 3中,现在需要部署几个DLL,包括System.Web.webpage和其他几个DLL。几乎所有不在.NET Framework中的东西都需要部署到主机上的bin目录中。@Eilon,我已经部署了这些东西。[System.Web.Mvc(3版)、Microsoft.Web.Infrastructure.dll、System.Web.Helpers、System.Web.Razor、System.Web.WebPages、System.Web.WebPages.Razor]。@Eilon,但即使删除了上面的dll,我的基于Razor的Web Mvc 3仍在运行。我想知道这些已经安装在服务器GAC中了,但技术支持人员说没有。是否应回收应用程序池以使删除的DLL生效?Thnx marcind。实际上我已经把rc版本复制到服务器上了。所以,我在global.asax中打印了日志以查看System.Web.Mvc.dll的位置,并发现它在GAC_MSIL文件夹中!。我已经从hosing公司的技术支持团队那里得到确认,mvc3不在他们的GAC中,但似乎测试版是。@marcind,那么有没有办法强制引用/bin目录中的RC version System.Web.Mvc.dll而不是GAC中的beta version dll?“bindingRedirect”能起作用吗?@tk在这种情况下,GAC将始终获胜,因为DLL的版本相同。有什么解决方案吗?以某种方式修改RC dll,使其优先于GAC中的beta dll?确保您可以使用3.0.1版自己编译MVC。但最终的问题在于主持人在gac中安装了测试版。