2011-01-13 63 views
0

我一直對我的第一個MVC的Web應用程序,自啓動它,我一直gettign此郵件後自動從我的Application_errror法派在Global.asax中這個ninject控制器工廠錯誤是什麼意思?

這純粹是一個404的消息?它將如何生成?我沒有任何控制器命名的文字,我得的HomeController和AssistanceController ...

System.InvalidOperationException: The IControllerFactory 'FightTheFloods.Infrastructure.NinjectControllerFactory' did not return a controller for the name 'text'. 
    at System.Web.Mvc.MvcHandler.ProcessRequestInit(HttpContextBase httpContext, IController& controller, IControllerFactory& factory) 
    at System.Web.Mvc.MvcHandler.BeginProcessRequest(HttpContextBase httpContext, AsyncCallback callback, Object state) 
    at System.Web.Mvc.MvcHandler.BeginProcessRequest(HttpContext httpContext, AsyncCallback callback, Object state) 
    at System.Web.Mvc.MvcHandler.System.Web.IHttpAsyncHandler.BeginProcessRequest(HttpContext context, AsyncCallback cb, Object extraData) 
    at System.Web.HttpApplication.CallHandlerExecutionStep.System.Web.HttpApplication.IExecutionStep.Execute() 
    at System.Web.HttpApplication.ExecuteStep(IExecutionStep step, Boolean& completedSynchronously) 
The IControllerFactory 'FightTheFloods.Infrastructure.NinjectControllerFactory' did not return a controller for the name 'text'. 
    at System.Web.Mvc.MvcHandler.ProcessRequestInit(HttpContextBase httpContext, IController& controller, IControllerFactory& factory) 
    at System.Web.Mvc.MvcHandler.BeginProcessRequest(HttpContextBase httpContext, AsyncCallback callback, Object state) 
    at System.Web.Mvc.MvcHandler.BeginProcessRequest(HttpContext httpContext, AsyncCallback callback, Object state) 
    at System.Web.Mvc.MvcHandler.System.Web.IHttpAsyncHandler.BeginProcessRequest(HttpContext context, AsyncCallback cb, Object extraData) 
    at System.Web.HttpApplication.CallHandlerExecutionStep.System.Web.HttpApplication.IExecutionStep.Execute() 
    at System.Web.HttpApplication.ExecuteStep(IExecutionStep step, Boolean& completedSynchronously) 

這裏是我的控制器工廠代碼

public class NinjectControllerFactory : DefaultControllerFactory 
    { 
     private IKernel kernel = new StandardKernel(new FightTheFloodsServices()); 

     protected override IController GetControllerInstance(System.Web.Routing.RequestContext requestContext, Type controllerType) 
     { 
      if (controllerType == null) 
       return null; 
      return (IController)kernel.Get(controllerType); 
     } 


     /// <summary> 
     /// Configuration for Ninject 
     /// </summary> 
     private class FightTheFloodsServices : NinjectModule 
     { 
      public override void Load() 
      { 
       Bind<IAssistanceManager>().To<AssistanceManager>(); 
       Bind<IAssistanceAlerter>().To<AssistanceAlerter>(); 
       Bind<ILocationHelper>().To<LocationHelper>(); 
       Bind<IUsersRepository>().To<UsersRepository>().WithConstructorArgument("connectionString", ConfigurationManager. 
                            ConnectionStrings[ 
                             "AppDb"]. 
                            ConnectionString); 
       Bind<IAssistanceRequestRepository>().To<AssistanceRequestRepository>().WithConstructorArgument(
        "connectionString", ConfigurationManager. 
              ConnectionStrings[ 
               "AppDb"]. 
              ConnectionString); 
      } 
     } 
    } 
+0

我們需要查看自定義控制器工廠中的代碼(GetControllerInstance方法)以提供幫助。 – RPM1984 2011-01-13 07:52:13

回答

0

我有一個類似GetControllerInstance,我也得到各種問題 。有時會出現 激活WorkflowController錯誤 有多個匹配的綁定可用。 激活路徑: 1)請給WorkflowController

建議: 1)確保您已經定義了WorkflowController綁定只有一次。

有時候會說有些值不能爲空......而有時候它會令人討厭地成功解析控制器。

2

我正經歷着類似的問題,幸運的是錯誤信息都有些更有幫助我的情況:

"NinjectControllerFactory' did not return a controller for the name 'left_bg.gif'" 
"NinjectControllerFactory' did not return a controller for the name 'Content'" 

的唯一參考我的應用程序「left_bg.gif」是該網站的主要樣式。它錯誤地指向錯誤的文件夾。指向正確的文件夾修復了這個錯誤。

Fiddler幫我解決了第二個錯誤。 「內容」是一個包含幾個子文件夾(「圖像」,「腳本」等)的文件夾。顯然,我的代碼指的是在「/ Content/Images /」文件夾中不存在的圖像,導致在提琴手中出現500錯誤代碼。所以我刪除了對該圖像的引用,Fiddler報告沒有更多的問題,並且錯誤停止了。

我可以隨意複製它,所以我建議使用Fiddler來查看頁面刷新時是否有任何錯誤,跟蹤這些錯誤並將其排除爲原因。如果您有一個名爲「text」的文件夾或資源(如您報告的錯誤中所示),那麼NinjectControllerFactory可能會抱怨這一點,就像我一樣。