Ошибка Ninject: он IControllerFactory "Ninject.Web.Mvc.NinjectControllerFactory" не возвратил контроллер для имени "Продукты",

76
10

Я получаю следующий желтый экран смерти "The IControllerFactory" Ninject.Web.Mvc.NinjectControllerFactory "не возвратил контроллер для имени" Продукты "". Зачем? Здесь моя настройка


Обновление
Эта конфигурация работает на моем компьютере, но не на моем компьютере, даже если наши компьютеры имеют одинаковый код и конфигурацию.


код


    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();
}
}


Подробнее об ошибке
IControllerFactory "Ninject.Web.Mvc.NinjectControllerFactory" не вернул контроллер для имени "Продукты".
Описание: Необработанное исключение возникло во время выполнения текущего веб-запроса. Просмотрите трассировку стека для получения дополнительной информации об ошибке и ее возникновении в коде.


Сведения об исключении:


System.InvalidOperationException: IControllerFactory "Ninject.Web.Mvc.NinjectControllerFactory" не вернул контроллер для имени "Продукты".



Ошибка источника:


Необработанное исключение было создано во время выполнения текущего веб-запроса. Информация о происхождении и местоположении исключения может быть идентифицирована с использованием следа стека исключений ниже.



Трассировка стека:


[InvalidOperationException: The IControllerFactory 'Ninject.Web.Mvc.NinjectControllerFactory' did not return a controller for the name 'Products'.]
System.Web.Mvc.MvcHandler.ProcessRequestInit(HttpContextBase httpContext, IController& controller, IControllerFactory& factory) +365
System.Web.Mvc.MvcHandler.BeginProcessRequest(HttpContextBase httpContext, AsyncCallback callback, Object state) +160
System.Web.Mvc.MvcHandler.BeginProcessRequest(HttpContext httpContext, AsyncCallback callback, Object state) +80
System.Web.Mvc.MvcHandler.System.Web.IHttpAsyncHandler.BeginProcessRequest(HttpContext context, AsyncCallback cb, Object extraData) +45
System.Web.CallHandlerExecutionStep.System.Web.HttpApplication.IExecutionStep.Execute() +8837208
System.Web.HttpApplication.ExecuteStep(IExecutionStep step, Boolean& completedSynchronously) +184

спросил(а) 2021-01-19T15:30:45+03:00 2 месяца, 3 недели назад
1
Решение
61

Обновите до последней Ninject.Web.Mvc и удалите эту строку:


RegisterAllControllersIn(Assembly.GetExecutingAssembly());

Регистрация больше не требуется.

ответил(а) 2021-01-19T15:30:45+03:00 2 месяца, 3 недели назад
44

попробуйте следующее:


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

и убедитесь, что у вас есть правильное действие под названием

ответил(а) 2021-01-19T15:30:45+03:00 2 месяца, 3 недели назад
Ваш ответ
Введите минимум 50 символов
Чтобы , пожалуйста,
Выберите тему жалобы:

Другая проблема