問題タブ [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.

0 投票する
0 に答える
1099 参照

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 を使用して、私の IFooMethodInfoinvocation.Request.Target.GetType()(実装タイプを返す - Foo)に変換しますMethodInfo

推奨事項はありますか?

0 投票する
1 に答える
2466 参照

c# - NinjectInterceptorsを非同期メソッドで機能させる

ninjectインターセプターを使用して、非同期コードの一部をさまざまな動作でラップし始めていますが、すべてを機能させるのに問題があります。

これが私が使用しているインターセプターです:

これは、ほとんどの通常の場合に正しく実行されるように見えます。これが私が期待することをするかどうかはわかりません。制御フローを非同期的に呼び出し元に返すように見えますが、プロキシが意図せずにスレッドなどをブロックしている可能性については、まだ少し心配しています。

それはさておき、例外処理を機能させることはできません。このテストケースの場合:

インターセプターでキャッチブロックがヒットしていることがわかりますが、テストのキャッチブロックが再スローからヒットすることはありません。ここにはプロキシなどがなく、非常に単純なモックとオブジェクトがあるため、私はもっと混乱しています。私も自分のテストのようなことを試しTask.Run(() => interceptor.Intercept(invocation.Object)).Wait();ましたが、それでも変化はありません。テストは問題なく合格しますが、nUnit出力には例外メッセージがあります。

私は何かを台無しにしていると想像します、そして私は私が思っているほど何が起こっているのかよく理解していません。非同期メソッドをインターセプトするためのより良い方法はありますか?例外処理に関して何が間違っていますか?

0 投票する
1 に答える
503 参照

wcf - インターセプトが WCF と Ninject 3.0 で機能しない

Ninject 3.0 と傍受 WCF メソッドに問題があります。

TaskServiceを使用しています

私の構成は次のとおりです。

ServiceInterceptor は IInterceptor を実装し、

カーネルに UnitTest を使用している場合、ninject は ITaskService の実装アクションに DynamicProxy オブジェクトを使用しますが、WCF では機能しません。

NinjectServiceHostFactory が DynamicProxy と Interception を使用して ITaskService の実装を返さない理由がわかりません。

0 投票する
0 に答える
580 参照

asp.net-mvc - Ninject Intercept モジュールを接続するには?

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

TimingInterceptor の場所

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

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

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

0 投票する
2 に答える
20293 参照

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 つに呼び出しが入るたびに、次のエラーがスローされます。

経験のある人は、私が間違っていることを指摘してもらえますか? ありがとう。

0 投票する
1 に答える
351 参照

c# - beforeinvoke メソッドと afterinvoke メソッドを 2 回呼び出す Ninject Interceptor

私はasp.netでアプリを開発しています.Ninject Interceptorを実装しており、サービスをバインド/登録しています.

このサービスのメソッドを呼び出しているとき

メソッド BeforeInvoke が TimeInterceptor で 2 回呼び出されています。なんで?

0 投票する
1 に答える
1214 参照

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 (およびそれらに必要なすべての依存関係) の両方に対する依存関係があります。

0 投票する
1 に答える
2910 参照

c# - InterceptAttributeを使用してNinjectインターセプトを使用する方法

私は次のようにNinjectWebCommonを持っています。「Timing」属性が設定されているメソッドでTimingInterceptorをトリガーすることができません。すべてのメソッド呼び出しがインターセプトされるクラスレベルでインターセターが定義されている場合は正常に機能しますが、インターセプトするメソッドを指定(オプトイン)できるようにしたいと思います。

Ninject.Extensions.Interception.DynamicProxyが追加されています。

私のサービスクラスは次のように定義します

インターセプターと属性は次のように定義されます

0 投票する
1 に答える
1228 参照

c# - Ninject Interceptor の Intercept メソッドを非同期メソッドにする

実際のメソッドが呼び出される前後にいくつかのタスクを実行するために Ninject Interceptor を使用していますが、これらの操作を非同期にする必要があります。次の記事Making-ninject-interceptors-work-with-async-methodsを見て、その非同期部分を実装しましたが、最後のピースが1つ欠けており、タスクが完了するのを待っています/非ブロック待機していますインターセプト法で。

  • これを非同期の非ブロッキング操作にしたいので、待機を使用できません

    /li>
  • 私はこのメソッドに async を入れようとさえしましたが、おそらくこれが void メソッドであるという事実で、まだ問題があります

    /li>

この本当の方法をずっと非同期にする方法はありますか?

0 投票する
1 に答える
153 参照

c# - Ninject Interceptor カスタム PlanningStrategy が Ninject 3 で機能しない

私は一定期間 Ninject 2 を使用しており、SignalR やその他のフレームワークをより適切にサポートするために Ninject 3 に更新しました。

以下のコードは正常に動作していました。

ただし、ninject バインディングで IAdviceFactory を見つけることができないと言って爆発します。この拡張機能に関するドキュメントがほとんどないため、インターセプターの最新バージョンに重大な変更がありましたか?最近は AoP が浮かんでいます)。

それで、問題が何であるかを教えてくれるどこかの方向に誰かが私を向けることができますか?