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

3

编译此代码时:

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, string)'

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

我在RTM上重现了这个问题,并向微软提交了工单


尝试在":"后右键单击 IControllerFactory,然后选择实现接口,就会弹出缺失的选项。 - Oskar Kjellin
@Oskar - 没有漏掉的方法,这就是问题所在。如果我注释掉CreateController方法,并使用Resharper的“实现方法”功能,代码仍然无法编译。 - ripper234
那么尝试显式实现吧? - Oskar Kjellin
@Oskar - 不错的想法,但它不起作用。 - ripper234
@John - 微软以“设计如此”为由关闭了这个问题。我简直无法理解。 - ripper234
显示剩余5条评论
4个回答

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)

我会尝试采纳你的建议。 - ripper234
帮了我大忙!这是在一个.NET 4.0解决方案中,定义了自定义控制器(通过IController)并引用了MVC 2.0的情况。 - Ropstah

0

你可能有两个冲突的 System.Web.routing 版本或类似的情况。


你安装了多个Beta或RC版本吗?你的bin文件夹中有可疑的东西吗? 你尝试使用csc.exe编译它了吗? 顺便说一下 - 查看VS的输出窗口以查看其生成的csc.exe调用。 - Ken Egozi
我之前安装了Beta 2版本,然后完全卸载了它,现在安装了RC版本。我会尝试看看csc.exe说了什么。 - ripper234

0

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

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

更多信息这里


我写了明确的类名,但这并没有帮助 :( - ripper234
你是写了System.Web.Routing.RequestContext还是System.ServiceModel.Channels.RequestContext?应该是前者。 - Thomas
我写了 System.Web.Routing.RequestContext 但是不起作用。我猜这只是 Visual Studio 中一个无法解决的错误。我会升级到 RTM 版本,看看它是否能解决问题。 - ripper234

0

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


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接