Я пытаюсь создать новый проект, и я добавил новый класс MembershipService, который требует HttpContext быть переданы в это конструктор.MVC5 Ninject связывания и HttpContext
В предыдущем проекте я использовал код
private static void RegisterServices(IKernel kernel)
{
kernel.Bind<IMembershipService>()
.To<MembershipService>()
.InRequestScope()
.WithConstructorArgument("context", HttpContext.Current);
....
}
Однако в новом проекте я использую Ninject модулей, и после некоторого поиска на StackOverflow и Google, я придумал код ниже: общественного класса ServiceHandlerModule: NinjectModule {
public override void Load()
{
Bind<IMembershipService>()
.To<MembershipService>()
.WithConstructorArgument("context", ninjectContext=> HttpContext.Current);
this.Kernel.Bind(x =>
{
x.FromAssemblyContaining(typeof(NinjectWebCommon))
.SelectAllClasses()
.Where(t => t != typeof(MembershipService))
.BindDefaultInterface();
});
this.Kernel.Bind(x =>
{
x.FromAssemblyContaining<BrandServiceHandler>()
.SelectAllClasses()
.Where(t => t != typeof(MembershipService))
.BindDefaultInterface();
});
}
}
Однако я получаю ошибку ниже:
Описание: Необработанное исключение произошло во время выполнения текущего веб-запроса. Просмотрите трассировку стека для получения дополнительной информации о ошибке и ее возникновении в коде.
Сведения об исключении: Ninject.ActivationException: Ошибка активации строка Нет соответствующих привязок, и тип не является самопереключаемым. Путь активации:
5) Инъекция строки зависимостей в параметр имени файла конструктора типа HttpRequest
4) Инъекция зависимости HttpRequest в запрос параметра конструктора типа HttpContext
3) Инъекции зависимости HttpContext в параметре httpContext от конструктор типа MembershipService
2) Инъекция зависимости IMembershipService в параметр membershi pService конструктора типа HomeController
1) Запрос HomeController
Может кто-то указать, где я неправильно?
Спасибо, Джон
Из сообщения об исключении кажется, что параметр называется 'httpContext' ... поэтому попробуйте его с помощью' .WithConstructorArgument («httpContext», ninjectContext => HttpContext.Current); ' – nemesv