从ASP MVC 3 Beta更新到RC后出错

时间:2010-12-02 17:22:24

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

将我的ASP MVC 3应用程序从测试版更新到realease候选版后,我遇到了这个错误:

{"Method not found: 'Void System.Web.Mvc.GlobalFilterCollection.Add(System.Object, System.Nullable`1<Int32>)'."}

此代码中的Global.asax内发生错误:

    protected void Application_Start()
    {
        AreaRegistration.RegisterAllAreas();

        RegisterGlobalFilters(GlobalFilters.Filters); // <-- Here
        RegisterRoutes(RouteTable.Routes);
    }

这是我的RegisterGlobalFilters()

    public static void RegisterGlobalFilters(GlobalFilterCollection filters)
    {
        filters.Add(new HandleErrorAttribute());
    }

以下是我的System.Web.MVC.dll的详细信息: alt text

System.Web.MVC.dll文件实际上是从程序集文件夹中丢失的,它应该在这里吗? alt text

以下是我计算机上安装的所有MVC应用程序的屏幕截图,在我安装新的RC之前,测试版未经安装,我也是通过Microsoft Web Platform Installer安装的,所以我认为应该没问题: alt text

任何人都有线索?

3 个答案:

答案 0 :(得分:1)

查看Reflector中的RC版System.Web.Mvc.dll,我看到了private void AddInternal(object filter, int? order)方法。这听起来好像在测试版中被命名为Add

RC版本为3.0.11029.0。检查C:\Program Files (x86)\Microsoft ASP.NET\ASP.NET MVC 3\Assemblies中的dll版本,如果在发布/部署的网站上看到错误,请检查dll版本。

修改

release notes上找到了安装说明:

  

在安装ASP.NET MVC 3 RC之前,必须先卸载ASP.NET MVC 3 Preview 1或ASP.NET MVC 3 Beta。

我不确定卸载测试版会清除哪些内容,但如果您没有卸载测试版,则可能需要卸载RC和测试版,然后重新安装RC。

答案 1 :(得分:0)

以下是{MV} 3 RC应用程序的默认模板中RegisterGlobalFilters方法的样子:

public static void RegisterGlobalFilters(GlobalFilterCollection filters)
{
    filters.Add(new HandleErrorAttribute());
}

你看起来一样吗?显然,第二个参数(Nullable<int>)已从Add方法中删除。

答案 2 :(得分:0)

确保您的测试计算机上有正确版本的System.Web.Mvc.dll。即使您的应用程序的bin文件夹中有RC版本,Ff MVC 3 Beta也会安装到GAC中,然后它将始终获胜。尝试找出你的dll正在从哪个目录加载。