2010-04-10 234 views
3

「未實現IControllerFactory.CreateController」 當編譯此代碼:在Visual Studio 2010

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' does not implement interface member 'System.Web.Mvc.IControllerFactory.CreateController(System.Web.Routing.RequestContext, string)'

那麼,它顯然實現了這個成員。有沒有人遇到過這個問題?

我在RTM上轉載了這個,打開了ticket with Microsoft

+0

嘗試右鍵單擊IControllerFactory後面的「:」並說實現界面,錯過會出現 – 2010-04-10 14:03:13

+0

@Oskar - 沒有錯過的方法,這就是問題所在。如果我註釋掉CreateController方法,並使用Resharper執行「實現方法」,則代碼仍然不能編譯。 – ripper234 2010-04-10 14:04:41

+0

嘗試明確實施嗎? – 2010-04-10 14:05:44

回答

0

你可能有兩個相互衝突的System.Web.routing或類似的版本。

+0

我該如何檢查? – ripper234 2010-04-10 15:11:18

+0

您是否安裝了多個Betas或RCs?你在bin文件夾中有一些可疑的東西嗎? 你試過用csc.exe編譯它嗎? 順便說一句 - 看看VS的輸出窗口,看看它生成的csc.exe調用? – 2010-04-10 15:50:34

+0

我以前測試過2,然後完全卸載它然後安裝RC。我會嘗試看看csc.exe所說的。 – ripper234 2010-04-11 04:56:14

0

System.ServiceModel.Channels命名空間中還有一個RequestContext類;包含在System.ServiceModel.dll程序集中。

將鼠標懸停在您的方法的RequestContext參數類型上,並檢查它是否指向正確的方法。

更多信息here

+0

我寫了明確的類名,它沒有幫助:( – ripper234 2010-04-13 13:06:46

+0

並且你寫了System.Web.Routing。RequestContext或System.ServiceModel.Channels.RequestContext?你應該有第一個。 – Thomas 2010-04-13 14:17:32

+0

明天我會仔細檢查。 – ripper234 2010-04-15 05:52:05

3

錯誤走了後,我加入參考System.Web.Routing 4.0.0.0。在此之前它是間接引用到3.5.0.0版本(通過System.Web.Mvc,版本= 2.0.0.0,文化=中性公鑰= 31bf3856ad364e35)

因此我有以下引用:
System.Web程序。 Mvc 2.0.0.0(v2.0.50727)
System.Web.Routing 4.0.0.0(v4.0.30128)

+0

我會試一試你的建議。 – ripper234 2010-04-15 05:43:23

+0

不起作用,對不起。 – ripper234 2010-04-16 10:33:19

+0

幫我!這是在.NET 4.0解決方案中定義了定製控制器(通過IController)並引用了MVC 2.0的情況。 – Ropstah 2011-09-20 08:47:03

0

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