2012-05-10 3 views
7

Hier ist mein ModulWCF mit Ninject Entsorgen Auslösung nicht in request

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

Hier ist die global.asax

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

I InScope auch versucht (c => OperationContext.Current)

Hier ist mein Service mit 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(); 
    } 

Hier ist der Servicehost im Dienst Markup

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

die Injektion von Abhängigkeiten funktioniert. Meine einzige Sorge ist, dass die dispose-Methode nicht ausgelöst wird, wenn der Client den Service-Aufruf beendet.

Ich habe versucht, die Factory = "Ninject.Extensions.Wcf.NinjectDataServiceHostFactory" zu entfernen, nur um zu testen, ob die Dipose aufgerufen wird, und es hat angerufen, aber natürlich werde ich keine automatische Injektion haben. Also könnte es etwas falsches im Setup geben? oder es liegt ein Fehler darin, dass ninject nicht Dispose aufruft?

Hinweis: Ich nehme das Beispiel-Setup in NINJECT-Erweiterung und fügte einfach einige DI.

Ihre Hilfe wird geschätzt.

BTW: Ich benutze Ninject 3.0.0.15, 3.0.0.5 Ninject.Extensions.Wcf, Ninject.Web.Common 3.0.0.7

Antwort

6

Verwenden

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

Hallo Remo, danke. –

+0

Remo, kannst du es ein bisschen erklären, wie das Problem gelöst wird? Danke – Hari

+2

WCF fordert eine WebService-Instanz an, kein IWebService –