Castle Windsor:控制器中的PerWebRequest

时间:2013-06-02 21:19:02

标签: model-view-controller controller inversion-of-control castle-windsor perwebrequest

我在MVC应用程序中使用Castle Windsor,我遇到了这个问题:

我有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中)与我期望它们不一样

IAuthenticationProviderAuthenticationProvider及其注册位于不同的项目中(Windows库)。

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

LifestylePerThread不适用于相同错误

当我设置LifestyleSignleton时,它可以正常工作。

有人可以帮忙吗?感谢。

1 个答案:

答案 0 :(得分:0)

问题是IAuthenticationProvider有单身生活方式。我已将其更改为PerWebRequest,现在它可以正常工作。