Asp.net mvc 9对象错误:他是IControllerFactory';Ninject.Web.Mvc.NinjectControllerFactory';未返回名称为';产品';

Asp.net mvc 9对象错误:他是IControllerFactory';Ninject.Web.Mvc.NinjectControllerFactory';未返回名称为';产品';,asp.net-mvc,asp.net-mvc-2,ninject,Asp.net Mvc,Asp.net Mvc 2,Ninject,我看到下面的死亡黄屏“IControllerFactory'Ninject.Web.Mvc.NinjectControllerFactory'没有返回名为'Products'的控制器”。为什么?这是我的设置 更新 此配置适用于我的计算机,但不适用于我同事的计算机,即使我们的计算机具有相同的代码和配置 代码 public class MvcApplication : NinjectHttpApplication { public static void Regist

我看到下面的死亡黄屏“IControllerFactory'Ninject.Web.Mvc.NinjectControllerFactory'没有返回名为'Products'的控制器”。为什么?这是我的设置

更新 此配置适用于我的计算机,但不适用于我同事的计算机,即使我们的计算机具有相同的代码和配置

代码

    public class MvcApplication : NinjectHttpApplication
    {
        public static void RegisterRoutes(RouteCollection routes)
        {
            routes.IgnoreRoute("{resource}.axd/{*pathInfo}");

            routes.MapRoute(
                "Default", // Route name
                "{controller}/{action}/{id}", // URL with parameters
                new { controller = "Products", action = "Index", id = UrlParameter.Optional } // Parameter defaults
            );

        }

        protected override void OnApplicationStarted()
        {
            RegisterRoutes(RouteTable.Routes);
            RegisterAllControllersIn(Assembly.GetExecutingAssembly());
        }

        protected override IKernel CreateKernel()
        {
            var modules = new INinjectModule[]
                        {
                            new WebModule()
                        };

            return new StandardKernel(modules);
        }
    }

public class WebModule : NinjectModule
    {
        public override void Load()
        {
            Bind<IAuthoringRepository>()
                .ToProvider(new AuthoringProvider())
                .InSingletonScope();

            Bind<ICatalogEntity>()
                .ToProvider(new ProductProvider())
                .InSingletonScope();

            Bind<TargetData>()
                .ToProvider(new TargetDataProvider()).InSingletonScope();
        }
    }

    public class AuthoringProvider : Provider<IAuthoringRepository> {
        protected override IAuthoringRepository CreateInstance(IContext context)
        {
            WindowsIdentity identity = WindowsIdentity.GetCurrent();
            IAuthoringRepository result = RepositoryFactory.CreateAuthoringRepository(identity);
            return result;
        }
    }

    public class TargetDataProvider : Provider<TargetData>
    {
        protected override TargetData CreateInstance(IContext context)
        {
            return new TargetData { Language = Language.En, Province = Province.ON };
        }
    }

    public class ProductProvider : Provider<Product>
    {
        protected override Product CreateInstance(IContext context)
        {
            return new Product();
        }
    }
更新至最新版本并删除此行:

RegisterAllControllersIn(Assembly.GetExecutingAssembly());
不再需要注册。

尝试以下操作:

routes.MapRoute(null, "",               
    new { controller = "Products", action = "Index", }
);

并确保您执行了名为

的正确操作。我已按照您所说的更新了程序集并删除了该方法,但问题仍然存在:(所以它可以在一台机器上运行,但不能在你的机器上运行,配置相同……你有没有任何未签入的挂起更改?在生产环境中这是可以的,但在开发环境中我有同样的问题。该死。你有一个名为
ProductsController
的类?是的。其中有很多代码,这就是我没有发布它的原因。
routes.MapRoute(null, "",               
    new { controller = "Products", action = "Index", }
);