c# – 如何使用NinjectHttpApplication(无nuget)在HttpModule中注入依赖项?
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了c# – 如何使用NinjectHttpApplication(无nuget)在HttpModule中注入依赖项?,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1997字,纯文字阅读大概需要3分钟。
内容图文
![c# – 如何使用NinjectHttpApplication(无nuget)在HttpModule中注入依赖项?](/upload/InfoBanner/zyjiaocheng/784/0026135d584b490880b4e999eefa06f1.jpg)
我有一个.Net MVC 3.0应用程序,我正在使用Ninject 3.0.我没有安装任何nuget.我正在引用Ninject.dll,Ninject.Web.Common.dll和Ninject.Web.Mvc.dll(以及其他2个).我想在自定义HttpModule中注入依赖项,我无法弄清楚如何使它与NinjectHttpApplication一起工作.
我有这个错误:
激活IntPtr时出错
没有匹配的绑定可用,并且该类型不可自绑定.
激活路径:
3)将依赖IntPtr注入到Func {IKernel}类型的构造函数的参数方法中
2)将依赖关系Func {IKernel}注入到HttpApplicationInitializationHttpModule类型的构造函数的参数lazyKernel中
1)请求IHttpModule
这是代码:
Global.asax中
public class MvcApplication: NinjectHttpApplication
{
...
protected override void OnApplicationStarted()
{
base.OnApplicationStarted();
AreaRegistration.RegisterAllAreas();
RegisterGlobalFilters(GlobalFilters.Filters);
RegisterRoutes(RouteTable.Routes);
}
protected override IKernel CreateKernel()
{
var modules = new INinjectModule[]
{
new ServiceModule()
};
IKernel kernel = new StandardKernel(modules);
return kernel;
}
}
Web.Config中
<httpModules>
<add name="NinjectHttpModule" type="Ninject.Web.Common.NinjectHttpModule"/>
</httpModules>
CustomHttpModule.cs
public class CustomHttpModule : IHttpModule
{
private ITesttService service;
public CustomHttpModule(ITesttService service)
{
this.service = service;
}
...
}
ServiceModule.cs
public class ServiceModule : NinjectModule
{
public override void Load()
{
...
Kernel.Bind<ITestService>().To<TestService>();
Kernel.Bind<IHttpModule>().To<CustomHttpModule>().InSingletonScope();
}
}
这个绑定解决了我的问题:
kernel.Bind<Func<IKernel>>().ToMethod(c => () => this.Kernel);
但根据github上的这个post,我不应该这样做.
你能告诉我我做错了什么或错过了吗?
解决方法:
目前,在从NinjectHttpApplication派生时,没有好的方法可以使用NinjectHttpModule.引导程序为两种方式注册HttpApplicationInitializationHttpModule,并且只要加载NinjectHttpModule,也会加载此模块.
不幸的是,没有什么好处可以卸载它.
我建议您使用WebActivator代替从NinjectHttpApplication派生.这是让它运行的唯一正确方法.您不必使用nuget以这种方式设置您的应用程序.您也可以手动添加相同的文件并手动引用所有必需的程序集.
内容总结
以上是互联网集市为您收集整理的c# – 如何使用NinjectHttpApplication(无nuget)在HttpModule中注入依赖项?全部内容,希望文章能够帮你解决c# – 如何使用NinjectHttpApplication(无nuget)在HttpModule中注入依赖项?所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。