Castle Windsor: PerWebRequest в контроллере

Я использую Castle Windsor в приложении MVC, и у меня возникла эта проблема:

У меня IUnitOfWorkProvider зависимость, от которой я хочу PerWebRequest вести образ жизни.

В контроллере у меня есть две зависимости:

public class UserController : Controller
{
    public UserController(IUnitOfWorkProvider unitOfWorkProvider,
                          IAuthenticationProvider authenticationProvider)
    {
        this.unitOfWorkProvider = unitOfWorkProvider;
        this.authenticationProvider = authenticationProvider;
    }
    ...
}

AuthenticationProvider имеет такую ​​же зависимость (IUnitOfWorkProvider)

public class AuthenticationProvider : IAuthenticationProvider
{
    public AuthenticationProvider(IUnitOfWorkProvider unitOfWorkProvider)
    {
        this.unitOfWorkProvider = unitOfWorkProvider;
    }
    ...
}

Проблема в том, что «два» UnitOfWorkProvider (в контроллере и в AuthenticationProvider) не совпадают, как я ожидал.

_9 _, _ 10_ и его регистрация находятся в другом проекте (Windows Library).

container.Register(Component.For<IUnitOfWorkProvider>()
                            .ImplementedBy<UnitOfWorkProvider>()
                            .LifestylePerWebRequest());

LifestylePerThread не работает с той же ошибкой.

Когда я устанавливаю LifestyleSignleton, он работает нормально.

Кто-нибудь может помочь? Спасибо.


person Martin Volek    schedule 02.06.2013    source источник
comment
я не совсем понимаю, в чем настоящая проблема   -  person maxlego    schedule 03.06.2013
comment
@maxlego: я изменил описание, чтобы оно было более понятным, надеюсь, что оно лучше   -  person Martin Volek    schedule 04.06.2013
comment
что такое образ жизни IAuthenticationProvider?   -  person maxlego    schedule 04.06.2013
comment
IAuthenticationProvider ведет одноэлементный образ жизни. Как я мог сделать такую ​​глупую ошибку! Благодарю за помощь. Это действительно была профессиональная слепота: D   -  person Martin Volek    schedule 05.06.2013


Ответы (1)


Проблема заключалась в том, что у IAuthenticationProvider был одноэлементный образ жизни. Я также изменил его на PerWebRequest, и теперь он работает нормально.

person Martin Volek    schedule 04.06.2013