問題タブ [ninject-interception]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
c# - メソッド属性による Ninject Interception 3.0 インターフェイス プロキシ
比較的大きなコードベースを Ninject 2.2 から Ninject 3.0 にアップグレードしました。私たちが使用するインターセプトにいくつかの変更を加える必要があったことを除いて、すべてが計画どおりに進んでいるようです.
この縮小バージョンは、Ninject 2.3 で大きな効果を発揮するために使用したものです。インターフェイス プロキシが許可されていないため、すべてのメソッドを仮想としてマークし、Castle 動的プロキシがそれらをオーバーライドできるようにしました。
[LogMethod] をインターフェイス レベルに移動して、インターフェイス プロキシを使用します。
ただし、移動すると、Ninject はこのクラスを傍受したいことを検出しなくなります。また、そのままにしておくと、微妙な問題が発生します。
これinvocation.Request.Method
は Interface からの MethodInfo ですIFoo
。実装Foo
ではありません。これは、属性を取得できなくなったことを意味します。したがって、現時点ではこれら2つの問題の間で立ち往生しています-属性をインターフェースに配置すると、Ninjectはプロキシを作成しません.実装に属性を配置すると、属性を簡単に取得してそのプロパティにアクセスできません。現時点で私の唯一の解決策はこれです:
または、InterfaceMapping を使用して、私の IFooMethodInfo
をinvocation.Request.Target.GetType()
(実装タイプを返す - Foo
)に変換しますMethodInfo
。
推奨事項はありますか?
c# - NinjectInterceptorsを非同期メソッドで機能させる
ninjectインターセプターを使用して、非同期コードの一部をさまざまな動作でラップし始めていますが、すべてを機能させるのに問題があります。
これが私が使用しているインターセプターです:
これは、ほとんどの通常の場合に正しく実行されるように見えます。これが私が期待することをするかどうかはわかりません。制御フローを非同期的に呼び出し元に返すように見えますが、プロキシが意図せずにスレッドなどをブロックしている可能性については、まだ少し心配しています。
それはさておき、例外処理を機能させることはできません。このテストケースの場合:
インターセプターでキャッチブロックがヒットしていることがわかりますが、テストのキャッチブロックが再スローからヒットすることはありません。ここにはプロキシなどがなく、非常に単純なモックとオブジェクトがあるため、私はもっと混乱しています。私も自分のテストのようなことを試しTask.Run(() => interceptor.Intercept(invocation.Object)).Wait();
ましたが、それでも変化はありません。テストは問題なく合格しますが、nUnit出力には例外メッセージがあります。
私は何かを台無しにしていると想像します、そして私は私が思っているほど何が起こっているのかよく理解していません。非同期メソッドをインターセプトするためのより良い方法はありますか?例外処理に関して何が間違っていますか?
wcf - インターセプトが WCF と Ninject 3.0 で機能しない
Ninject 3.0 と傍受 WCF メソッドに問題があります。
TaskServiceを使用しています
私の構成は次のとおりです。
ServiceInterceptor は IInterceptor を実装し、
カーネルに UnitTest を使用している場合、ninject は ITaskService の実装アクションに DynamicProxy オブジェクトを使用しますが、WCF では機能しません。
NinjectServiceHostFactory が DynamicProxy と Interception を使用して ITaskService の実装を返さない理由がわかりません。
asp.net-mvc - Ninject Intercept モジュールを接続するには?
Ninject、Ninject.Extensions.Interception、および Ninject.Extensions.Interception.DynamicProxy を NuGet 経由でインストールしました。次のモジュールがあります。
TimingInterceptor の場所
さて、モジュールをninjectカーネルに接続してサイトを実行しようとすると
次のエラーが発生しました。
基本的に、特定のことをログに記録したいアクションメソッドが呼び出されるたびに、ASP.NET MVC アプリのログを記録しようとしています。しかし、このエラーを回避する方法がわかりません。経験のある人は、私が間違っていることを指摘してもらえますか? ありがとう。
asp.net-mvc - ロギングのためにNinjectインターセプトですべてのASP.NET WebApiコントローラーアクションメソッド呼び出しをインターセプトする方法は?
当社では、ASP.NET WebApi コントローラーのアクション メソッドの 1 つが呼び出されるたびに、特定のものをログに記録する必要があります。現在DIにNinjectを使っているので、これも使っていきたいです。これは私がこれまでに試したことです。
Ninject、Ninject.Extensions.Interception、および Ninject.Extensions.Interception.DynamicProxy を NuGet 経由でインストールしました。次のモジュールがあります。
TimingInterceptor の場所
さて、モジュールをninjectカーネルに接続してサイトを実行しようとすると
ただし、アクション メソッドの 1 つに呼び出しが入るたびに、次のエラーがスローされます。
経験のある人は、私が間違っていることを指摘してもらえますか? ありがとう。
c# - beforeinvoke メソッドと afterinvoke メソッドを 2 回呼び出す Ninject Interceptor
私はasp.netでアプリを開発しています.Ninject Interceptorを実装しており、サービスをバインド/登録しています.
このサービスのメソッドを呼び出しているとき
メソッド BeforeInvoke が TimeInterceptor で 2 回呼び出されています。なんで?
ninject - Ninject 規則と傍受
インターセプト用の属性でサービスを装飾し、規約ベースのバインディングでインターセプターを設定したいと考えています。自分の属性を傍受属性から継承したくありません...回避できれば。
たとえば、次のクラスがあります。
これを次のようにバインドできることを理解しています。
属性とインターセプターのさまざまな組み合わせでこれを行うにはどうすればよいですか? 例えば:
Log 属性と Authorize 属性がある場合、3 セットのバインディングを構成する必要がありますか? (認証なしのログ用に 1 つ、ログなしの認証用に 1 つ、ログと認証の両方用に 1 つ)。
更新:元の質問パラメーターに基づく解決策を見つけることができませんでしたが、同様の質問に出くわし、最終的に解決策にたどり着きました。ソースコードは次のとおりです。
注: Common.Interception.Interceptors名前空間は、Ninject.Extensions.Interception (および必要なすべての依存関係) への参照を持つアセンブリ内にあります。私の属性は、独自の依存関係のない別のアセンブリで定義されています。
MiscExtensions.cs
AlternateInterceptorRegistrationStrategy.cs
IInterceptorConfig.cs
InterceptorConfig.cs
TraceInterceptor.cs - サンプル インターセプター
注:アトリビュート/インターセプターを接続する方法を示す簡単なコンソール アプリを次に示します。これには、Ninject.Extensions.Interception.DynamicProxy と Ninject.Extensions.Conventions (およびそれらに必要なすべての依存関係) の両方に対する依存関係があります。
c# - InterceptAttributeを使用してNinjectインターセプトを使用する方法
私は次のようにNinjectWebCommonを持っています。「Timing」属性が設定されているメソッドでTimingInterceptorをトリガーすることができません。すべてのメソッド呼び出しがインターセプトされるクラスレベルでインターセターが定義されている場合は正常に機能しますが、インターセプトするメソッドを指定(オプトイン)できるようにしたいと思います。
Ninject.Extensions.Interception.DynamicProxyが追加されています。
私のサービスクラスは次のように定義します
インターセプターと属性は次のように定義されます
c# - Ninject Interceptor の Intercept メソッドを非同期メソッドにする
実際のメソッドが呼び出される前後にいくつかのタスクを実行するために Ninject Interceptor を使用していますが、これらの操作を非同期にする必要があります。次の記事Making-ninject-interceptors-work-with-async-methodsを見て、その非同期部分を実装しましたが、最後のピースが1つ欠けており、タスクが完了するのを待っています/非ブロック待機していますインターセプト法で。
これを非同期の非ブロッキング操作にしたいので、待機を使用できません
/li>私はこのメソッドに async を入れようとさえしましたが、おそらくこれが void メソッドであるという事実で、まだ問題があります
/li>
この本当の方法をずっと非同期にする方法はありますか?
c# - Ninject Interceptor カスタム PlanningStrategy が Ninject 3 で機能しない
私は一定期間 Ninject 2 を使用しており、SignalR やその他のフレームワークをより適切にサポートするために Ninject 3 に更新しました。
以下のコードは正常に動作していました。
ただし、ninject バインディングで IAdviceFactory を見つけることができないと言って爆発します。この拡張機能に関するドキュメントがほとんどないため、インターセプターの最新バージョンに重大な変更がありましたか?最近は AoP が浮かんでいます)。
それで、問題が何であるかを教えてくれるどこかの方向に誰かが私を向けることができますか?