0

キャッスル ウィンザーを使用して、HandleException フィルターをウィンザー コンテナーに追加し、HandleExceptionFilter に ILogger を挿入できるようにします。このエラーが発生するため、LifestylePerWebRequest を使用できませんでした。私のHandleExceptionFilterがTransientで正しくリリースされるかどうか疑問に思っていますか?

 public override IController CreateController(RequestContext requestContext, string controllerName)
        {

            var controller = base.CreateController(requestContext, controllerName);

            var c = controller as Controller;

            if (c != null)
            {
                c.ActionInvoker = new ErrorHandlingActionInvoker(_kernel.Resolve<IExceptionFilter>());
            }

            return controller;
        }
4

1 に答える 1

0

過渡成分の場合:

Resolve< > を使用してコンテナーからそれらを解決すると、明示的に解放するまで存続します。

型指定されたファクトリを使用してコンポーネントを作成する場合、ファクトリで Destroy メソッドを呼び出すまで、またはファクトリの有効期間が終了するまでメソッドを呼び出さない場合、コンポーネントは存続します。

一時的なコンポーネントがコンストラクターの依存関係として、またはプロパティのセッターとして解決される場合、コンポーネントは、含まれているコンポーネントの有効期間が終了するまで存続します。

これは、デフォルトのリリース ポリシーが使用されていることを前提としています。NoTracking 削除ポリシーが使用されている場合、コンテナーはコンポーネントへの参照を保持しません。(これを使用することはお勧めしません)。

これがあなたの質問に答えることを願っています。

于 2013-01-09T22:01:53.250 に答える