将我的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的详细信息:
System.Web.MVC.dll文件实际上是从程序集文件夹中丢失的,它应该在这里吗?
以下是我计算机上安装的所有MVC应用程序的屏幕截图,在我安装新的RC之前,测试版未经安装,我也是通过Microsoft Web Platform Installer安装的,所以我认为应该没问题:
任何人都有线索?
答案 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正在从哪个目录加载。