0

私は次のウィンザーセットアップを持っています:

        container.Register(
            Component.For<HttpContextBase>().
                UsingFactoryMethod(() => new HttpContextWrapper(HttpContext.Current)).LifeStyle.PerWebRequest);

        container.Register(
            Component.For<IPrincipal>().
                UsingFactoryMethod(() => HttpContext.Current.User).LifeStyle.PerWebRequest);

次に、HttpContext.Current.Userプロパティが設定される前に、HttpContextBaseを解決しようとしています。HttpContextBaseの解決中に、windsorはnullであるIPrincipalを解決しようとし、例外がスローされます。

解決策を、それが実行すべきだと思っていたものに置き換えると、

new HttpContextWrapper(HttpContext.Current)

その後、私のコードは機能します。

WindsorがHttpContextBaseのIPrincipalを解決しようとする理由を誰かが説明できますか?やめてもいいですか?

4

1 に答える 1

1

Windsorは、プロパティの依存関係も注入しようとします。あなたは明示的に言わなければなりません、あなたはしたくありません。

Component.For<HttpContextBase>().Properties(PropertyFilter.IgnoreAll))...
于 2012-10-26T07:04:30.203 に答える