私は次のウィンザーセットアップを持っています:
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を解決しようとする理由を誰かが説明できますか?やめてもいいですか?