Ошибка указывает, что где-то Ninject пытается разрешить интерфейс ILoggerFactory
для конкретного класса. Исходя из того, что вы указали в качестве ссылок выше, похоже, что ваше веб-приложение ASP.Net основано на WebForms, а не на ASP.Net MVC.
Имея это в виду, ваши страницы должны быть получены из PageBase
, который является абстрактным классом, предоставляемым веб-библиотекой Ninject. Этот класс имеет следующее определение свойства:
[Inject]
public ILogger Logger { get; set; }
Поэтому, когда создается ваша страница, Ninject пытается внедрить регистратор в свойство на странице. Как намекает на ошибку, вам нужна привязка, определенная для ILoggerFactory
, а также ILogger
; однако единственная привязка, которую вы указали, относится к IDataAccess
. Вам также необходимо загрузить один из модулей, определенных в библиотеке расширений журналирования. Я считаю, что вы можете выбрать между NLog и Log4Net. Так, например, если вы хотите использовать Log4Net, ваша функция CreateKernel
будет выглядеть так:
protected override IKernel CreateKernel()
{
IKernel kernel = new StandardKernel(new Log4netModule());
kernel.Bind<IDataAccess>().To<DataAccessEntBlock>().InSingletonScope();
return kernel;
}
Предполагается, что в файле есть оператор using Ninject.Extensions.Logging.Log4net;
.
В любом случае вам нужно выбрать регистратор и загрузить его привязки (через модуль), как того требует веб-библиотека Ninject. Если у вас сейчас нет проблем с журналированием, вы можете предложить реализации ILoggerFactory
и ILogger
, которые ничего не делают (то есть, «нулевой» регистратор) и сами связывают ваш фиктивный ILoggerFactory.