大佬教程收集整理的这篇文章主要介绍了c# – 将Ninject 2.0与ASP .Net 3.5一起使用,大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
> Ninject.dll – v2.0.0.0
> Ninject.Extensions.Logging.dll v2.0.0.0
> Ninject.Web.dll v1.0.0.0
protected override IKernel CreateKernel() { IKernel kernel = new StandardKernel(); kernel.bind<IDataAccess>().To<DataAccessEntBlock>().InSingletonScope(); return kernel; }
当我运行应用程序时,我得到以下错误.
Error activaTing ILoggerFactory No matching bindings are available,and the type is not self-bindable. Activation path: 1) request for ILoggerFactory Suggestions: 1) Ensure that you have defined a binding for ILoggerFactory. 2) If the binding was defined in a module,ensure that the module has been loaded into the kernel. 3) Ensure you have not accidentally created more than one kernel. 4) If you are using automatic module loading,ensure the search path and filters are
正确.
即使我没有尝试注册Logger,我也不理解,似乎它正试图创建它自己的.我该如何解决这个错误?我是否必须使用任何Ninject的扩展记录器?
谢谢
GK
考虑到这一点,您的@L_489_8@应该从PageBase派生,PageBase是Ninject Web库提供的抽象类.该类具有以下属性定义:
[Inject] public ILogger Logger { get; set; }
因此,当您的@L_489_8@被实例化时,Ninject会尝试将记录器注入@L_489_8@上的属性.正如错误所暗示的那样,您需要为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; }
这假设你有一个使用Ninject.Extensions.Logging.Log4net;文件中的声明.
在任何一种情况下,您都必须选择一个记录器并加载它的绑定(通过模块),因为Ninject Web库需要它.如果您现在没有任何日志记录问题,您可以选择提供不执行任何操作的ILoggerFactory和ILogger的实现(即“null”记录器)并自行绑定您的虚拟ILoggerFactory.
以上是大佬教程为你收集整理的c# – 将Ninject 2.0与ASP .Net 3.5一起使用全部内容,希望文章能够帮你解决c# – 将Ninject 2.0与ASP .Net 3.5一起使用所遇到的程序开发问题。
如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。