Aquí es mi móduloWCF utilizando Ninject Desechar no desencadenar en requestScope
internal class WebServiceConfiguration : NinjectModule
{
public override void Load()
{
Bind<IWebService>().To<WebService>().InRequestScope();
}
}
Aquí es el Global.asax
public class Global : NinjectHttpApplication
{
protected override IKernel CreateKernel()
{
return new StandardKernel(new WebServiceConfiguration());
}
}
También probé InScope (c => OperationContext.Current)
Aquí está mi servicio con IDisposable en IWebService
[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();
}
Aquí es el ServiceHostFactory en el marcado de servicios
<%@ ServiceHost Language="C#" Debug="true" Factory="Ninject.Extensions.Wcf.NinjectDataServiceHostFactory" Service="WCFTest.Services.WebService" CodeBehind="WebService.svc.cs" %>
La inyección de dependencias obras. Mi única preocupación es que el método de eliminación no se active cuando el Cliente cierre la llamada de servicio.
Intenté eliminar la Factory = "Ninject.Extensions.Wcf.NinjectDataServiceHostFactory" solo para comprobar si se llamará a la Dipose, y se realizó la llamada, pero por supuesto no tendré la inyección automática. ¿Entonces podría haber algo que estoy haciendo mal en la configuración? o hay un error en ninject no llamando Dispose?
Nota: Cojo la configuración de muestra en la extensión wcf de ninject y simplemente agregué un poco de DI.
Su ayuda será apreciada.
Por cierto: estoy usando Ninject 3.0.0.15, Ninject.Extensions.Wcf 3.0.0.5, 3.0.0.7 Ninject.Web.Common
Hola Remo, gracias. –
Remo, ¿podría explicarme un poco cómo esto resuelve el problema? Gracias – Hari
WCF solicita una instancia de WebService no un IWebService –