Ninject Abfangen Erweiterung mit WCF gibt mir eine „Objektverweis nicht auf eine Instanz eines Objekts festgelegt.“ Fehler

StackOverflow https://stackoverflow.com/questions/4297955

Frage

Ich bin immer mit der Ninject Abfangen Erweiterung gestartet und kann es nicht in meinem WCF-Dienst an der Arbeit. Mit der WCF-Erweiterung, ninject gut funktioniert, dann ist es das Abfangen, die mir Mühe hat zu geben. Vielleicht ist es mache ich falsch? Wenn ich versuche, die LinFuModel im Kernel Konstruktor hinzuzufügen es mir sagt, es ist bereits geladen, so dass ich das ist gut erraten.

Grundsätzlich sind alle Interception auf die Bindungs ??bricht meine Wcf-Dienst, aber meine methodinterception funktioniert nur auf den Dienst (getData () ist im Servicevertrag).

Bearbeiten: die folgend auch nicht funktioniert :

  Kernel.Intercept((request) => request.Method.Name.StartsWith("Get"))
            .With<TimingInterceptor>(); 

Ende bearbeiten

protected override IKernel CreateKernel()
    {
        IKernel kernel = new StandardKernel(new ServiceModule());

        //var binding = kernel.Bind<MockBroker>().ToSelf();
        //binding.Intercept().With<TimingInterceptor>(); // THIS BREAKS

        kernel.InterceptAfter<Watch>(m => m.GetData(0), i => { i.ReturnValue = "BLABLABLA"; log.Info("INTERCEPTED!"); }); //WORKS

        //kernel.Bind<Watch>().ToSelf().Intercept().With(new TimingInterceptor()); //BREAKS
        //kernel.Bind<FileSystemBroker>().ToSelf().Intercept().With<TimingInterceptor>(); //BREAKS
        return kernel;
    }

public class TimingInterceptor : SimpleInterceptor
{
    readonly Stopwatch _stopwatch = new Stopwatch();
    //private static readonly ILog log = LogManager.GetLogger(System.Reflection.MethodBase.GetCurrentMethod().DeclaringType);
    protected override void BeforeInvoke(IInvocation invocation)
    {
        _stopwatch.Start();
    }

    protected override void AfterInvoke(IInvocation invocation)
    {
        _stopwatch.Stop();
        string message = string.Format("[Execution of {0} took {1}.]",
                                        invocation.Request.Method,
                                        _stopwatch.Elapsed);
        //log.Info(message);
       _stopwatch.Reset();
    }
}

Danke im Voraus, Rinze

War es hilfreich?

Lösung

Linfu unterstützt nur virtuelle Methode Interception. Ändern Sie alle abgefangenen Methoden, um virtuelle oder Switch DynamicProxy2.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top