2

Ninject、Ninject.Extensions.Interception、および Ninject.Extensions.Interception.DynamicProxy を NuGet 経由でインストールしました。次のモジュールがあります。

public class InterceptAllModule : InterceptionModule
{
    public override void Load()
    {
        Kernel.Intercept(p => (true)).With(new TimingInterceptor());
    }
}

TimingInterceptor の場所

public class TimingInterceptor : SimpleInterceptor
{
    readonly Stopwatch _stopwatch = new Stopwatch();
    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 + "\n");
        _stopwatch.Reset();
    }
}

さて、モジュールをninjectカーネルに接続してサイトを実行しようとすると

var kernel = new StandardKernel(new InterceptAllModule());

次のエラーが発生しました。

Could not load type 'Castle.Proxies.Func`1Proxy' from assembly 'DynamicProxyGenAssembly2, Version=0.0.0.0, Culture=neutral, PublicKeyToken=a621a9e7e5c32e69' because the parent type is sealed.

基本的に、特定のことをログに記録したいアクションメソッドが呼び出されるたびに、ASP.NET MVC アプリのログを記録しようとしています。しかし、このエラーを回避する方法がわかりません。経験のある人は、私が間違っていることを指摘してもらえますか? ありがとう。

4

0 に答える 0