我在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
中)与我期望它们不一样。
IAuthenticationProvider
,AuthenticationProvider
及其注册位于不同的项目中(Windows库)。
container.Register(Component.For<IUnitOfWorkProvider>()
.ImplementedBy<UnitOfWorkProvider>()
.LifestylePerWebRequest());
LifestylePerThread
不适用于相同错误。
当我设置LifestyleSignleton
时,它可以正常工作。
有人可以帮忙吗?感谢。
答案 0 :(得分:0)
问题是IAuthenticationProvider有单身生活方式。我已将其更改为PerWebRequest,现在它可以正常工作。