2012-05-10 16 views
7

Ecco il mio moduloWCF utilizzando Ninject Smaltire non innescare in requestscope

internal class WebServiceConfiguration : NinjectModule 
{ 
    public override void Load() 
    { 
     Bind<IWebService>().To<WebService>().InRequestScope(); 
    } 
} 

Ecco la global.asax

public class Global : NinjectHttpApplication 
{ 
    protected override IKernel CreateKernel() 
    { 
     return new StandardKernel(new WebServiceConfiguration()); 
    } 
} 

Ho anche provato InScope (c => OperationContext.Current)

Ecco il mio servizio con IDisposable in 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(); 
    } 

Ecco il ServiceHostFactory nel markup servizio

<%@ ServiceHost Language="C#" Debug="true" Factory="Ninject.Extensions.Wcf.NinjectDataServiceHostFactory" Service="WCFTest.Services.WebService" CodeBehind="WebService.svc.cs" %> 

L'iniezione delle dipendenze opere. La mia unica preoccupazione è che il metodo di eliminazione non venga attivato quando il client chiude la chiamata di servizio.

Ho provato a rimuovere Factory = "Ninject.Extensions.Wcf.NinjectDataServiceHostFactory" solo per verificare se il Dipose verrà chiamato e ha chiamato ma ovviamente non avrò l'autoiniezione. Quindi potrebbe esserci qualcosa che sto facendo male nel setup? o c'è un bug su ninject che non chiama Dispose?

Nota: accetto l'installazione di esempio nell'estensione wcf di ninject e appena aggiunto alcuni DI.

Il vostro aiuto sarà apprezzato.

BTW: sto usando Ninject 3.0.0.15, Ninject.Extensions.Wcf 3.0.0.5, 3.0.0.7 Ninject.Web.Common

risposta

6

Usa

Bind<IWebService, WebService>().To<WebService>().InRequestScope(); 
+0

Ciao Remo, grazie. –

+0

Remo, potresti spiegarlo un po 'come questo risolve il problema? Grazie – Hari

+2

WCF richiede un'istanza WebService non un IWebService –

Problemi correlati