Ninject Abfangen Erweiterung mit WCF gibt mir eine „Objektverweis nicht auf eine Instanz eines Objekts festgelegt.“ Fehler
-
28-09-2019 - |
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
Lösung
Linfu unterstützt nur virtuelle Methode Interception. Ändern Sie alle abgefangenen Methoden, um virtuelle oder Switch DynamicProxy2.