这是我的模块
internal class WebServiceConfiguration : NinjectModule
{
public override void Load()
{
Bind<IWebService>().To<WebService>().InRequestScope();
}
}
这是global.asax
public class Global : NinjectHttpApplication
{
protected override IKernel CreateKernel()
{
return new StandardKernel(new WebServiceConfiguration());
}
}
我也尝试过InScope(c =&gt; OperationContext.Current)
这是我在IWebService中使用IDisposable的服务
[ServiceBehavior(InstanceContextMode = InstanceContextModeDefinition.Mode)]
[AspNetCompatibilityRequirements(RequirementsMode = AspNetCompatibilityRequirementsMode.Allowed)]
public class WebService : IWebService
{
private readonly ISomeService _someService;
public WebService(ISomeService someService)
{
_someService = someService;
}
public void Dispose()
{
_someService.Dispose();
}
这是服务标记中的ServiceHostFactory
<%@ ServiceHost Language="C#" Debug="true" Factory="Ninject.Extensions.Wcf.NinjectDataServiceHostFactory" Service="WCFTest.Services.WebService" CodeBehind="WebService.svc.cs" %>
注入依赖项有效。我唯一关心的是当客户端关闭服务调用时没有触发dispose方法。
我试图删除Factory =“Ninject.Extensions.Wcf.NinjectDataServiceHostFactory”只是为了测试是否会调用Dipose,它确实调用了,但当然我不会自动注入。所以我可能会在设置中出错?或者ninject没有调用Dispose的错误?
注意:我在ninject wcf扩展中获取了示例设置,并添加了一些DI。
我们将不胜感激。
BTW:我正在使用Ninject 3.0.0.15,Ninject.Extensions.Wcf 3.0.0.5,Ninject.Web.Common 3.0.0.7
答案 0 :(得分:6)
使用
Bind<IWebService, WebService>().To<WebService>().InRequestScope();