ASP.NET MVC升级到Beta:IControllerFactory在未引用的程序集中定义

时间:2008-12-11 02:08:24

标签: asp.net-mvc castle-windsor upgrade asp.net-mvc-beta1

我目前正在将一个站点从ASP.NET MVC的预览2更新到Beta版本。经过详尽的搜索后,我在网站上找不到解决方案时遇到了我的上一次编译错误。我在Global.asax.cs中有一些代码,它使用Windsor容器设置IOC:

ControllerBuilder.Current.SetControllerFactory(typeof(WindsorControllerFactory));

编译器抱怨说:

The type 'System.Web.Mvc.IControllerFactory' is defined in an assembly that is not referenced. 
You must add a reference to assembly 'System.Web.Mvc, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null'.

奇怪的是,这个程序集引用。我从MVC beta程序集文件夹中引用它并设置为copy local。我甚至可以删除bin目录,重建,然后在反射器中查看程序集并查看界面。我已经尝试删除并重新添加引用,更改web.config的程序集和命名空间部分。我甚至从GAC中删除了System.Web.Mvc,以确保它使用正确的副本。

在写这个问题时,我想到也许Windsor在内部期待旧版本的程序集。我正在从MvcContrib下载最新版本以确定这是否是问题,我将发布结果。如果是这种情况,不应该使用最新版本更改程序集的版本号以使其显而易见吗?

感谢阅读, 布雷特

2 个答案:

答案 0 :(得分:2)

PublicKeyToken = null似乎不正确......

编辑:我是对的,PublicKeyToken应为“31bf3856ad364e35”。听起来它们与未签名的System.Web.Mvc.dll的私有版本相关联。

答案 1 :(得分:1)

检查您是否已在web.config文件中更新了对3.5.0.0的相应程序集引用,如测试版的更新说明中所述。