“不在Visual Studio 2010中实现IControllerFactory.CreateController”

时间:2010-04-10 13:57:25

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

编译此代码时:

public class WindsorControllerFactory : IControllerFactory
{
    private readonly WindsorContainer _container;

    public WindsorControllerFactory(WindsorContainer container)
    {
        _container = container;
    }

    public IController CreateController(RequestContext requestContext,
                                        string controllerName)
    {
        return (IController)_container.Resolve(controllerName);
    }

    public void ReleaseController(IController controller)
    {
        _container.Release(controller);
    }
}

我收到此错误:

  

'WindsorControllerFactory'没有   实现接口成员   “System.Web.Mvc.IControllerFactory.CreateController(System.Web.Routing.RequestContext,   字符串)'

好吧,它显然实现了这个成员。有人遇到过这个问题吗?

我在RTM上重现了这个,打开了ticket with Microsoft

4 个答案:

答案 0 :(得分:3)

添加对System.Web.Routing 4.0.0.0的引用后,错误消失了。在此之前它间接引用3.5.0.0版本(通过System.Web.Mvc,Version = 2.0.0.0,Culture = neutral,PublicKeyToken = 31bf3856ad364e35)

因此我有以下参考资料:
System.Web.Mvc 2.0.0.0(v2.0.50727)
System.Web.Routing 4.0.0.0(v4.0.30128)

答案 1 :(得分:0)

你可能有两个相互矛盾的System.Web.routing版本或类似的东西。

答案 2 :(得分:0)

RequestContext命名空间中还有一个System.ServiceModel.Channels类;包含在System.ServiceModel.dll程序集中。

将鼠标悬停在您方法的RequestContext参数类型上,并检查它是否指向正确的方法。

更多信息here

答案 3 :(得分:0)

包含对System.Web(v4.0.30319)的引用。